4 回答

TA貢獻446條經(jīng)驗 獲得超754個贊
因為閉包,說起來就復(fù)雜了。
aBtn[i].onclick?=?function?()?{
? ?aBtn[i].style.background?=?'red';
};
這個匿名function里面的變量 i 跟外層的?for(var?i=0;?i<aBtn.length;?i++) 中的 i 是同一個。而且,這個i在for循環(huán)里自增到aBtn.length這個值了。然后,i就一直就是?aBtn.length 的值。

TA貢獻1條經(jīng)驗 獲得超0個贊
將代碼aBtn[i].style.background?=?'red';改為?aBtn[i-1].style.background = 'red'; 以后,第三個按鈕會變成紅色, 所以i的值最后是3. ?for 循環(huán)只是起到給每個btn加事件的效果. 點擊這個事件觸發(fā)時候for 已經(jīng)循環(huán)完了, i的值是3, 那么就變成了aBtn[3]這個按鈕變紅,但是這個按鈕并不存在,所以三個按鈕沒有一個有反應(yīng)的. 但是改為i-1 后 .最后一個按鈕就變紅了.
end.3ku.all

TA貢獻48條經(jīng)驗 獲得超17個贊
循環(huán)體中只是定義了onclick的回調(diào)函數(shù),并不會執(zhí)行,當(dāng)次循環(huán)體執(zhí)行完時i===aBtn.length,所以不能使用。但是this關(guān)鍵字代表的是觸發(fā)click事件的element,是正確的。如果你不想用this,我把代碼改成如下,跟this效果是一樣的:
for(var?i=0;?i<aBtn.length;?i++){ var?index?=?i; aBtn[i].onclick?=?function?(index)?{ aBtn[index].style.background?=?'red'; };
新加變量index只是為了讓你更加明確。
更推薦你使用this

TA貢獻102條經(jīng)驗 獲得超139個贊
你這里沒有明確指定this是代表什么
如果這樣$("input").click(funciton(){$(this)})
這個時候用this的時候,this就是代表點擊input標(biāo)簽,但是你上面只是把input定義了變量,用this就會不知道是用什么this
添加回答
舉報