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 關注
- 332 瀏覽
添加回答
舉報
0/150
提交
取消