日期:2014-05-16  浏览次数:20307 次

js循环变量问题
 for(var i=1;i<=4;i++){
            $("#ss" + i).change(function(){
               alert(i+"");
           });
       }

当执行ss的onchange事件时alert(i);的值一致是5
求高手解决

------解决方案--------------------
 for(var i=1;i<=4;i++){
            $("#ss" + i).change(
             (function(j) {
               return function(){
               alert(j+"");
           }
             })(i);
            );
       }
------解决方案--------------------
因为你循环完毕,才去执行的change事件。可以参考这样写:

function change(id){
      $("#ss" + id).change(function(){
          alert(id+"");
      });
}

然后在你的表单标签里面加事件并传递id,调用change函数
------解决方案--------------------
应该是出现了典型的“闭包”问题,建议lz搜下“闭包”的原因,

for (var i = 1; i <= 4; i++) {
                $("#ss" + i).bind("change", { param: i }, function (e) {
                    alert(e.data.param);
                });
            }

------解决方案--------------------