如下代码,执行后在页面生成了5个按钮,分别为0,1,2,3,4
可是当我点击按钮的是为什么弹出来的alert对话框都是5呢?
在btn.onclick中的i的值好像一直是5?<script type="text/javascript">
        for(i=0;i<5;i++){
            var btn=document.createElement("button");
            btn.value = i;
            btn.onclick=function(){
                alert(i);
            }
            document.body.appendChild(btn);
        }
</script>

解决方案 »

  1.   

    alert(this.value);就可以了,因为你的i循环完了值就是5了,你的所有按钮都是alert的 i的值,  所以全是5
      

  2.   


    用this.value 固然是对的,但是如果
    btn.value = "按钮"+i;
    这样的话不就又不对了啊,我上面的代码只是举个例子的
      

  3.   

    <script type="text/javascript">
            for(i=0;i<5;i++){
                var btn=document.createElement("button");
                btn.value = "按钮" + i;
                btn.onclick=function(){
                    alert(this.value);
                }
                document.body.appendChild(btn);
            }
    </script>
    这样?
      

  4.   


    <script type="text/javascript">
            for(i=0;i<5;i++){
                var btn=document.createElement("button");
                btn.value = "按钮"+i;
        btn.tag = i;                     //设置个标记
                btn.onclick=function(){
                    alert(this.tag);             //输出标记
                }
                document.body.appendChild(btn);
            }
    </script>
      

  5.   

    for(i=0;i<5;i++){
                var btn=document.createElement("button");
                btn.value = "按钮" + i;
                (funtion (v){
                   btn.onclick=function(){
                    alert("按钮" + v);
                   }
                })(i);
                
                document.body.appendChild(btn);
            }