for(i = 0; i < list.length; i++) {
list[i].addEventListener ? list[i].addEventListener("mouseover",function(){list[i].className = "menuHover"}, false) : list[i].attachEvent("onmouseover", function(){list[i].className = "menuHover"});
}
list是用document.getElementsByTagName("li")取得的。但是这样结果确不对请问是什么问题?
list[i].addEventListener ? list[i].addEventListener("mouseover",function(){list[i].className = "menuHover"}, false) : list[i].attachEvent("onmouseover", function(){list[i].className = "menuHover"});
}
list是用document.getElementsByTagName("li")取得的。但是这样结果确不对请问是什么问题?
试试:"mouseover",function(){this.className =
还请告诉我一下,为什么我之前那样写会每次都改变那一个li的样式,我鼠标指到其它li的时候那个li的样式也改了,证明监听是成功添加到每一个li元素,只是他改变的为什么会是中间那一个呢?
噢,谢谢再问下就是用this我找了下早上看见的。“通过addEventListener添加的函数中的this,标准中并没有规定this必须指向目标元素, 尽管大多数浏览器都是这么实现的,但最终还是取决于浏览器的实现,我们需要用到目标元素的时候请调用event.currentTarget.” http://blog.csdn.net/ajaxuser/article/details/5858135你能帮我解释下这句的意思吗 ?
这个function中的this指的是响应mouseover事件的页面元素。如果不想用this的话,试试用return function这种方式传递参数"mouseover",(function(obj){
return function(){
obj.className = "menuHover";
}
})(list[i])