+ -
当前位置:首页 → 问答吧 → JS分别给数组元素加onclick,出现些小问题,求解~

JS分别给数组元素加onclick,出现些小问题,求解~

时间:2011-10-21

来源:互联网

功能是将所有button给一个onclick事件,就在alert那出问题了

JScript code
 window.onload = function()
  {
    var btn = document.getElementsByTagName("input");
    for(var i=0;i<btn.length;i++){
            btn[i].onclick = function(){
                alert(btn[i].value);
            }
    }
  }


HTML code
<body>
 <input type="button" value="button1"/>
 <input type="button" value="button2"/>
 <input type="button" value="button3"/>
 <input type="button" value="button4"/>
 </body>


这代码哪里出错啊??看上去没问题的啊~求解,尽量说详细点,谢谢~

作者: silence_xhn   发布时间: 2011-10-21

HTML code

<script>
 window.onload = function()
  {
    var btn = document.getElementsByTagName("input");
    for(var i=0;i<btn.length;i++){
            btn[i].onclick = (function(n){
                return function(){alert(btn[n].value);}
            })(i)
    }
  }
</script>
<body>
 <input type="button" value="button1"/>
 <input type="button" value="button2"/>
 <input type="button" value="button3"/>
 <input type="button" value="button4"/>
 </body>


作者: hookee   发布时间: 2011-10-21

引用 1 楼 hookee 的回复:

HTML code

<script>
 window.onload = function()
  {
  var btn = document.getElementsByTagName("input");
  for(var i=0;i<btn.length;i++){
  btn[i].onclick = (function(n){
  ……

我需要的是错在哪里,可以说下我的代码错的原因吗?????

作者: silence_xhn   发布时间: 2011-10-21

onclick执行的时候 变量i(作用范围在循环) 已经不存在了

作者: hookee   发布时间: 2011-10-21

引用 3 楼 hookee 的回复:

onclick执行的时候 变量i(作用范围在循环) 已经不存在了

噢噢,谢谢你的回答,那是否事件执行时所有事件以外的变量都不存在??有详细的参考资料吗?

作者: silence_xhn   发布时间: 2011-10-21