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;
};
繁星点点滴滴
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 传入匿名函数 } |
添加回答
举报
0/150
提交
取消