我正在处理一个非常简单的应用程序。当用户悬停在任何列表项目(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
当然 - 你的解决方案非常好!我只想指出:-) –