好吧,我有链接列表,我正在使用 for 循环处理它们,附加事件。 这些链接获取调用函数的单击事件。该函数需要对调用它的对象进行操作。就像这样:
<ul><li id = 'myId'>Text</li>
<li id = 'myId'>Text</li>
<li id = 'myId'>Text</li>
<li id = 'myId'>Text</li>
</ul>
var grab = document.getElementsByTagName('li');
for (var x =0;x<grab.length;x++){
grab[x].attachEvent('onmouseover',doSomething);
}
function doSomething(){
this.setAttribute('color','yellow');
}
除了 IE 之外,这在所有浏览器中都工作得很好,我遇到的问题似乎是 IE 希望“this”成为窗口,而不是调用事件的对象。
我知道 JQuery 很容易解决这个问题,只是我无法在这种情况下访问 JQuery。有没有一种方法,就在常规 JavaScript 中,让 IE 正确使用“this”,或者一种方法来近似其他人的行为?
谢谢
最佳答案
只需使用旧标准可靠的on[event]
处理程序即可。
for (var x = 0, len = grab.length; x < len; x++) {
grab[x].onmouseover = doSomething;
}
并确保您实际上没有重复问题中所示的 ID。
关于Javascript IE 事件,这个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10507699/