读书人

关于javascript的一个小疑点

发布时间: 2012-11-04 10:42:42 作者: rapoo

关于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(){}实际上是定义了一个方法,这个方法是独立的,里面引用不到外面循环的变量

读书人网 >Java Web开发

热点推荐