天之殇
2016-11-13 10:54
将视频中vivian的li扩展到多个li然后使用如下代码进行运动的时候startMove中无论传递this,还是对象本身aLi[i]都会报错,这是什么原因,这个链式运动不支持多个对象么?
var aLi = document.getElementsByTagName("li"); for(var i=0;i<aLi.length;i++){ aLi[i].timer = null; aLi[i].onmouseover = function(){ startMove(aLi[i],400,'width',function(){-----这里无论传递什么都会有错误 startMove(aLi[i],200,'height') }); } aLi[i].onmouseout = function(){ startMove(this,200,'width'); } } <li></li> <li></li> <li></li>
有人已经问过了解决方法是:
http://www.imooc.com/qadetail/139773
var aLi = document.getElementsByTagName("li"); for(var i=0;i<aLi.length;i++){ aLi[i].timer = null; aLi[i].onmouseover = function(){ var myThis = this; startMove(myThis,400,'width',function(){ startMove(myThis,200,'height') }); } aLi[i].onmouseout = function(){ var myThis = this; startMove(myThis,200,'width'); } }
但是我想知道为什么会出现这种情况,这里的this分别代表什么,aLi[i]传递到startMove又是什么变量,是指针还是仅仅一个object?
你可以在控制台输出测试下this指的是什么,或者你把所有代码粘贴过来 我看看
JS动画效果
113925 学习 · 1443 问题
相似问题