请问我的代码哪里有问题?关于onmous方法
答案:2 悬赏:60 手机版
解决时间 2021-11-13 06:57
- 提问者网友:書生途
- 2021-11-13 00:34
请问我的代码哪里有问题?关于onmous方法
最佳答案
- 五星知识达人网友:十年萤火照君眠
- 2021-11-13 01:04
collTopANodes[x].onmouseover = function(){
collTopANodes[x].className = navTopAOverClass;
}();
把最后那个括号删掉
collTopANodes[x].onmouseover = function(){
collTopANodes[x].className = navTopAOverClass;
};追问删掉之后这个事件就完全不执行了。。。追答你不是要鼠标移上去之后才执行这个么?
collTopANodes[x].onmouseover = function(){
this.className = navTopAOverClass;
};追问改成这样以后不但鼠标移上去不执行,一开始也不执行了,我在这个匿名函数中加了alert测试,没反应的。追答开始执行了,是因为你把这个函数后面加了() js会把它当做一个方法来执行。
你看看你的这个函数是不是在window.onload的时候调的,我测试过是好的。
1
2
追问原来是这样,明白了,但是还是实现不了,我没用window.onload,是放在body的最后执行的,现在鼠标移上去还是改变不了。。。匿名函数似乎没有执行,我没财富值了,没法追问了。。。能私聊吗?谢谢你
collTopANodes[x].className = navTopAOverClass;
}();
把最后那个括号删掉
collTopANodes[x].onmouseover = function(){
collTopANodes[x].className = navTopAOverClass;
};追问删掉之后这个事件就完全不执行了。。。追答你不是要鼠标移上去之后才执行这个么?
collTopANodes[x].onmouseover = function(){
this.className = navTopAOverClass;
};追问改成这样以后不但鼠标移上去不执行,一开始也不执行了,我在这个匿名函数中加了alert测试,没反应的。追答开始执行了,是因为你把这个函数后面加了() js会把它当做一个方法来执行。
你看看你的这个函数是不是在window.onload的时候调的,我测试过是好的。
1
2
追问原来是这样,明白了,但是还是实现不了,我没用window.onload,是放在body的最后执行的,现在鼠标移上去还是改变不了。。。匿名函数似乎没有执行,我没财富值了,没法追问了。。。能私聊吗?谢谢你
全部回答
- 1楼网友:醉吻情书
- 2021-11-13 01:42
当 onmouseover 被调用时 for 已经循环结束,你代码中并没有匿名函数,() 只是自动执行
把 for 循环改为下面这样
(function(a) { // 开始匿名函数,a 为 x 的参考
collTopANodes[a].onmouseover = function(){
this.className = navTopAOverClass;
})(x); // 将 x 传入匿名函数
}追问还是不行,而且我在这个函数后加了alert测试,for循环是执行的追答这种使用匿名方式调用事件的写法肯定是没错的,你应该是其它地方出现错误,有 console 的话最好在测试页面前打开
你可以测试下面的代码,用 onclick 代替的 onmouseover
</head>
aaa</div>
bbb</div>
ccc</div>