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

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