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

JavaScript函数的传递

JavaScript函数的传递

qq_补钙雪_0 2016-11-01 17:33:40
lis[i].onmouseover=function(){     this.className="likk"; }为啥不能写成lis[i].onmouseover=function(){     lis[i].className="likk"; }
查看完整描述

1 回答

已采纳
?
stone310

TA贡献361条经验 获得超191个赞

如果你的i值是个定值,这么写没问题,

如果i值是for循环里面定义的值,就不能这么用,因为页面加载时,循环已经完成,并不会因为事件没触发而停止,

所以当事件触发的时候i是定值(元素的length),不能起到动态调用的效果

查看完整回答
反对 回复 2016-11-01
  • qq_补钙雪_0
    qq_补钙雪_0
    嗯,就是这个。我的理解是,当循环到第N个值时,i等于N,然后,触发函数,这个时候i还是等于N,liss[i]应该可以调用的才对。【不好意思,能不能再说得详细一点。】 window.onload = function () { // 编写JS代码 var liss=document.getElementsByTagName("li"); for(var i=0;i<liss.length;i++){ liss[i].onmouseover=function(){ this.className="lihover"; } liss[i].onmouseout=function(){ this.className=""; } } }
  • qq_补钙雪_0
    qq_补钙雪_0
    你的意思是,这个时候,触发它的时候,i已经等于liss.length对吧。谢谢!!!
  • stone310
    stone310
    i++是在循环语句执行完后触发,因此当循环到第N个值时,i=N,然后触发函数,这里都没错,触发完函数后,继续i++,然后i就是N+1了,后面调用就不成立了
点击展开后面2
  • 1 回答
  • 0 关注
  • 1132 浏览
慕课专栏
更多

添加回答

举报

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