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

简单的动态伸缩为啥就是跑不起来呢?为什么浏览器工具会显示obj.style.width错误

简单的动态伸缩为啥就是跑不起来呢?为什么浏览器工具会显示obj.style.width错误

lulubiu 2017-05-03 16:36:18
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>多物体运动</title> <style> *{margin: 0;padding: 0} .li1{width:100px;height:100px; margin-bottom: 50px;background-color: teal;} .li2{width:100px;height:100px; margin-bottom: 50px;background-color: teal;} .li3{width:100px;height:100px; margin-bottom: 50px;background-color: teal;} </style> <script> window.onload=function(){ var lis=document.getElementsByTagName('li'); for(var i=0;i<lis.length;i++){ lis[i].timer=null; lis[i].onmouseover=go(this,400); lis[i].onmouseout=go(this,100); } } function go(obj,target) { clearInterval(obj.timer); obj.timer=setInterval(function(){ var speed=(target-obj.offsetWidth)/30; speed=speed<0?Math.floor(speed):Math.ceil(speed); if(obj.offsetWidth==target){ clearInterval(obj.timer); } else{ obj.style.width=obj.offsetWidth+speed+'px'; } },30); } </script> </head> <body> <li></li> <li></li> <li></li> </body> </html>
查看完整描述

1 回答

?
风筝_0010

TA贡献45条经验 获得超15个赞

因为onclick、onmouseover这种事件一般是赋值未运行的函数,比如lis[i].onmouseout=go; 而不是go()这种执行后的,所以你的go函数直接就在window环境里面执行了,传入的this是指向window的。

查看完整回答
反对 回复 2017-05-03
  • 1 回答
  • 1 关注
  • 1271 浏览
慕课专栏
更多

添加回答

举报

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