for(var i=0;i<91;i++){$("#wenti"+i+" input").click(function() {$("#wenti"+i+" input").attr("id",'off');$(this).attr('id','on');var wenti+i=Number($("#wenti"+i+" #on").val());w+i = wenti+i;});生成90个 对应前台的 id="wenti1"到 id="wenti90" 下面的input我上面这个写完没有任何效果。。。 一个一个手动加就可以
1 回答
元芳怎么了
TA贡献1798条经验 获得超7个赞
很经典的逢面试必考的js问题
for ( var i = 0; i < 91; i++) { $( "#wenti" + i + " input" ).click( function () { $( "#wenti" + i + " input" ).attr( "id" , 'off' ); // 这个click的function和变量i构成了一个闭包 // 这里的i不是循环时的那个值, 而是对变量i的一个引用 // 循环结束时i的值是91, 于是等到点击触发这个function时所有的i都是91 }); } |
解决方式是再包一层function, 给每一个闭包都创建一个自己的i
for ( var i = 0; i < 91; i++) { $( "#wenti" + i + " input" ).click( ( function (j) { return function () { $( "#wenti" + j + " input" ).attr( "id" , 'off' ); }; })(i); ); } |
- 1 回答
- 0 关注
- 293 浏览
添加回答
举报
0/150
提交
取消