当前位置: 代码迷 >> Java Web开发 >> 关于javascript的一个小疑点
  详细解决方案

关于javascript的一个小疑点

热度:6858   发布时间:2013-02-25 21:09:09.0
关于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(){}实际上是定义了一个方法,这个方法是独立的,里面引用不到外面循环的变量
  相关解决方案