为了账号安全,请及时绑定邮箱和手机立即绑定

为什么只有第一个节点对象会变,这是怎么回事???

为什么只有第一个节点对象会变,这是怎么回事???

神不在的星期二 2023-04-09 17:13:16
function navTopMouseOver(navDivId, navTopAClass, navTopAOverClass){var collTopANodes = document.getElementById(navDivId).getElementsByTagName("a");for (var x = 0; x < collTopANodes.length; x++) {collTopANodes[x].onmouseover = function(){collTopANodes[x].className = navTopAOverClass;}();}}我想实现在节点对象上鼠标进入就改变class,但是这段代码在网页一加载,我还没有让鼠标经过,它的class就变了,而且不循环,只有第一个节点对象会变,这是怎么回事?
查看完整描述

2 回答

?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

collTopANodes[x].onmouseover = function(){
collTopANodes[x].className = navTopAOverClass;
}();
把最后那个括号删掉
collTopANodes[x].onmouseover = function(){
collTopANodes[x].className = navTopAOverClass;
};

查看完整回答
反对 回复 2023-04-12
?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

当 onmouseover 被调用时 for 已经循环结束,你代码中并没有匿名函数,() 只是自动执行

把 for 循环改为下面这样


for (var x = 0; x < collTopANodes.length; x++) {    (function(a) { // 开始匿名函数,a 为 x 的参考        collTopANodes[a].onmouseover = function(){            this.className = navTopAOverClass;    })(x); // 将 x 传入匿名函数}


查看完整回答
反对 回复 2023-04-12
  • 2 回答
  • 0 关注
  • 105 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信