Frank337903
2014-10-05 23:38
为什么这里的
Li1 = document.getElementById('li1');
Li1.onmouseout = function(){
startMove(this,'opacity',30,function(){
startMove(Li1,'height',100,function(){
startMove(Li1,'width',200)
})
});
Li1 换成 this 就不行了么?只有一个函数startMove 的时候可以
对不起,对不起!没看清你问题所在!
补充一下,是这样的。第一个this是通过你对Li1的onmouseout属性的赋值,所以第一个函数可以使用this指代调用方法的对象,这个方法就是函数直接function(){}。
但是第二次调用这个函数的时候,它是作为函数调用而不是方法调用的,没有调用它的对象,所以用this不行。
因为startMove()是函数,而不是DOM的方法,
除非你在那个startMove的js代码块的头部加上
Object.prototype.startMove=startMove;
然后你才能写:
Li1.onmouseout = function(){this.startMove(this,'opacity',30)}
当然,要是这样的话,也不用传入obj了,直接把startMove()函数块里面的obj统统换成this,去掉函数定义里面的这个残烛,函数就写成这样了:
定义 function startMove(attr,iTarget,fn){…}
调用 Li1.onmouseout = function(){this.startMove('opacity',30)}
你看,跟jquery是一模一样吧。
jquery的$()本身就是一个函数对象,它早就给$()这个函数对象添加过animate()方法了。
我也是一样的,换了this之后就用不了,我还以为是编译器的问题呢
JS动画效果
113904 学习 · 1502 问题
相似问题