js循环变量问题

VirusFu 2013-07-17 12:58:46
for(var i=1;i<=4;i++){
$("#ss" + i).change(function(){
alert(i+"");
});
}

当执行ss的onchange事件时alert(i);的值一致是5
求高手解决
...全文
182 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
tony4geek 2013-07-17
  • 打赏
  • 举报
回复
你的绑定方法 i已经循环完了,js 中的闭包。 楼上几位的方法都可以实现看你需要
  • 打赏
  • 举报
回复
应该是出现了典型的“闭包”问题,建议lz搜下“闭包”的原因,

for (var i = 1; i <= 4; i++) {
                $("#ss" + i).bind("change", { param: i }, function (e) {
                    alert(e.data.param);
                });
            }
一叶飞舟 2013-07-17
  • 打赏
  • 举报
回复
因为你循环完毕,才去执行的change事件。可以参考这样写:

function change(id){
      $("#ss" + id).change(function(){
          alert(id+"");
      });
}
然后在你的表单标签里面加事件并传递id,调用change函数
  • 打赏
  • 举报
回复
for(var i=1;i<=4;i++){ $("#ss" + i).change( (function(j) { return function(){ alert(j+""); } })(i); ); }

87,991

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧