用addEventListener给一组元素添加事件问题

a34020249 2011-08-08 02:50:15


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")取得的。

但是这样结果确不对请问是什么问题?
...全文
701 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
a34020249 2011-08-08
  • 打赏
  • 举报
回复
还有我想了个办法,直接var e = list[i],然后用e嘿嘿这样就行了。

a34020249 2011-08-08
  • 打赏
  • 举报
回复
还是用this吧。
APM60- 2011-08-08
  • 打赏
  • 举报
回复
个人理解:
这个function中的this指的是响应mouseover事件的页面元素。

如果不想用this的话,试试用return function这种方式传递参数

"mouseover",(function(obj){
return function(){
obj.className = "menuHover";
}
})(list[i])

a34020249 2011-08-08
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 slowhand 的回复:]

当你鼠标滑过时,才会执行function(),这时候的i已经是循环结束后的值了。
[/Quote]

噢,谢谢再问下就是用this我找了下早上看见的。

“通过addEventListener添加的函数中的this,标准中并没有规定this必须指向目标元素, 尽管大多数浏览器都是这么实现的,但最终还是取决于浏览器的实现,我们需要用到目标元素的时候请调用event.currentTarget.”

http://blog.csdn.net/ajaxuser/article/details/5858135

你能帮我解释下这句的意思吗 ?
APM60- 2011-08-08
  • 打赏
  • 举报
回复
当你鼠标滑过时,才会执行function(),这时候的i已经是循环结束后的值了。
a34020249 2011-08-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 slowhand 的回复:]

每次都是最后一个改变样式吗?
试试:"mouseover",function(){this.className =
[/Quote]

还请告诉我一下,为什么我之前那样写会每次都改变那一个li的样式,我鼠标指到其它li的时候那个li的样式也改了,证明监听是成功添加到每一个li元素,只是他改变的为什么会是中间那一个呢?
a34020249 2011-08-08
  • 打赏
  • 举报
回复
不过我改成this确实好用了。。
a34020249 2011-08-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 slowhand 的回复:]

每次都是最后一个改变样式吗?
试试:"mouseover",function(){this.className =
[/Quote]
嗯,谢谢! 每次都是只改变中间的那一个li元素的样式,而且总是那一个。

this我早上在网上搜了下说大义是说W3C的标准没有定义this,this只是各个浏览器自身的实现什么的。会不会有浏览器不兼容啊
APM60- 2011-08-08
  • 打赏
  • 举报
回复
每次都是最后一个改变样式吗?
试试:"mouseover",function(){this.className =
a34020249 2011-08-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lmx1989219 的回复:]

document.getElementsByTagName("li")取得的会是数组吗?
[/Quote]

为什么不是数组
  • 打赏
  • 举报
回复
document.getElementsByTagName("li")取得的会是数组吗?

87,915

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧