请教Javascript关于onmouseover事件的问题
- HTML code
<html><head> <title>test</title> <style> ul li{ float:left; } </style></head><body> <ul id="myul"> <li>1</li> <li>2</li> <li>3</li> <li>4</li> </ul> <script language="javascript"> var nodes = this.myul.childNodes; for (var i = 0 ; i < nodes.length ; i++ ){ var node = nodes[i]; node.onmouseover = function() { node.style.backgroundColor = "red"; } } </script></body></html>
问题说明:
本人想实现,当鼠标移到一个li元素的时候,实现背景变色。于是自己写了上面的代码,运行的时候发现不论怎么鼠标移动到哪个li上都是最后一个li变色。
我知道在有的别的实现发现方法,自己也写了一段比较臃肿的代码实现了这个功能。如下
var nodes = this.myul,childNodes;
nodes[0].onmouseover = function() {
node.style.backgroundColor = "red";
}
nodes[0].onmouseout = function() {
node.style.backgroundColor = "white";
}
....
我想知道为什么通过循环这种方式不行,难道事件不能储存么?
麻烦哪位朋友给个解释下,有解决方法更好了,谢谢大家。
[解决办法]
- JScript code
var nodes = this.myul.childNodes; for (var i = 0 ; i < nodes.length ; i++ ){ var node = nodes[i]; node.onmouseover = function() { this.style.backgroundColor = "red"; } node.onmouseout = function() { this.style.backgroundColor = "transparent"; } }