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個 對應(yīng)前臺的 id="wenti1"到 id="wenti90" 下面的input我上面這個寫完沒有任何效果。。。 一個一個手動加就可以
1 回答

元芳怎么了
TA貢獻1798條經(jīng)驗 獲得超7個贊
很經(jīng)典的逢面試必考的js問題
for ( var i = 0; i < 91; i++) { $( "#wenti" + i + " input" ).click( function () { $( "#wenti" + i + " input" ).attr( "id" , 'off' ); // 這個click的function和變量i構(gòu)成了一個閉包 // 這里的i不是循環(huán)時的那個值, 而是對變量i的一個引用 // 循環(huán)結(jié)束時i的值是91, 于是等到點擊觸發(fā)這個function時所有的i都是91 }); } |
解決方式是再包一層function, 給每一個閉包都創(chuàng)建一個自己的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 關(guān)注
- 343 瀏覽
添加回答
舉報
0/150
提交
取消