JavaScript-onmouseover写在JS中只能调用匿名函数吗?

发布于 2017-01-30 22:03:33 字数 818 浏览 1261 评论 1

function childNav(obj,state)
{
obj.lastChild.style.display = state;
}
function init()
{
var obj = document.getElementById("nav").firstChild.childNodes;//#nav.ul.li[]
var num = obj.length;
for(var i = 1; i < num; i++)
{
obj.item(i).onmouseout = childNav(obj.item(i),"none");
//obj.item(i).onmouseout = function(){childNav(this,"none");}
//obj.item(i).onmouseout = function(){this.lastChild.style.display = "none";}
obj.item(i).onmouseout = childNav(obj.item(i),"block");
//obj.item(i).onmouseover = function(){childNav(this,"block");}
//obj.item(i).onmouseover = function(){this.lastChild.style.display = "block";}
}
}
window.onload = init;

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

偏爱自由 2017-08-09 07:10:40

你先分析你的第11行,意思是,调用childNav函数,然后将函数返回值赋给obj.item(i).onmouseout,完全背离你的意思,就不应该这样写。
obj.item(i).onmouseout接受一个函数,当mouseout事件发生时,调用你所赋给的函数,你注释掉的代码就写的很好。
当你的事件处理函数有参数时,调用代码就应该包含在匿名函数中,这样可以传递参数,如果事件处理函数没有参数,就可以将函数名直接赋给事件句柄即可

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文