我正在處理一個非常簡單的應用程序。當用戶懸停在任何列表項目(li
)上時,文本顏色將變爲綠色,當鼠標移出時,它會變回黑色。作爲參數的匿名函數的作用域
爲什麼我們不能在以下一段代碼中使用lis[i]
而不是this
關鍵字?
var lis = document.querySelectorAll('li');
var i = 0;
for(; i < lis.length; i++){
lis[i].addEventListener('mouseover', function(){
this.style.color = 'green';
});
lis[i].addEventListener('mouseout', function(){
this.style.color ="black";
});
};
事實上,'''i'''仍然會被定義,但卡在for循環的最後一個值(在這種情況下,lis.length,使得'''lis [i]'''undefined)。這是由於Javascript關閉。見@鄧肯的答案。 –
@MichaelYang謝謝指出,我更關注解決問題的根源 – Erazihel
當然 - 你的解決方案非常好!我只想指出:-) –