日期:2014-05-17  浏览次数:20709 次

关于javascript的一个小问题
JScript code

      <input name="q" type="text" value="1">
      <input name="q" type="text" value="2">
      <input name="q" type="text" value="3">


        <script type="text/javascript">
      var name = document.getElementsByName("q");
    for(var i=0;i<name.length;i++){
        var na = name[i];
        na.onclick=function(){
            alert(na.value);
        }
    }



这段代码是循环给每个标签添加onclick事件
问题1:
但是如果将上面的代码换成下面的代码,onclick就无效了(i在同一次循环里没变化吧?怎么会就没用了呢?)

问题2:下面代码的注释
JScript code

      <input name="q" type="text" value="1">
      <input name="q" type="text" value="2">
      <input name="q" type="text" value="3">


        <script type="text/javascript">
      var name = document.getElementsByName("q");
    for(var i=0;i<name.length;i++){
        name[i].onclick=function(){
            alert(name[i].value);
  //为什么要将name[i].value换成this.value才能使得点击事件,显示的是当前点击组件的value?而不是最后那个文本框的value?
        }
    }




------解决方案--------------------
因为i的是一个临时变量,你name[i].onclick=function(){}实际上是定义了一个方法,这个方法是独立的,里面引用不到外面循环的变量