為什么這里的?
Li1 = document.getElementById('li1');
Li1.onmouseout = function(){
startMove(this,'opacity',30,function(){
startMove(Li1,'height',100,function(){
startMove(Li1,'width',200)
})
});
Li1 換成 this 就不行了么?只有一個(gè)函數(shù)startMove 的時(shí)候可以
為什么這里的?
Li1 = document.getElementById('li1');
Li1.onmouseout = function(){
startMove(this,'opacity',30,function(){
startMove(Li1,'height',100,function(){
startMove(Li1,'width',200)
})
});
Li1 換成 this 就不行了么?只有一個(gè)函數(shù)startMove 的時(shí)候可以
2014-10-05
舉報(bào)
2014-12-15
對(duì)不起,對(duì)不起!沒看清你問題所在!
補(bǔ)充一下,是這樣的。第一個(gè)this是通過你對(duì)Li1的onmouseout屬性的賦值,所以第一個(gè)函數(shù)可以使用this指代調(diào)用方法的對(duì)象,這個(gè)方法就是函數(shù)直接function(){}。
但是第二次調(diào)用這個(gè)函數(shù)的時(shí)候,它是作為函數(shù)調(diào)用而不是方法調(diào)用的,沒有調(diào)用它的對(duì)象,所以用this不行。
2014-12-15
因?yàn)閟tartMove()是函數(shù),而不是DOM的方法,
除非你在那個(gè)startMove的js代碼塊的頭部加上
Object.prototype.startMove=startMove;
然后你才能寫:
Li1.onmouseout = function(){this.startMove(this,'opacity',30)}
當(dāng)然,要是這樣的話,也不用傳入obj了,直接把startMove()函數(shù)塊里面的obj統(tǒng)統(tǒng)換成this,去掉函數(shù)定義里面的這個(gè)殘燭,函數(shù)就寫成這樣了:
定義 ?function startMove(attr,iTarget,fn){…}
調(diào)用 ? Li1.onmouseout = function(){this.startMove('opacity',30)}
你看,跟jquery是一模一樣吧。
jquery的$()本身就是一個(gè)函數(shù)對(duì)象,它早就給$()這個(gè)函數(shù)對(duì)象添加過animate()方法了。
2014-10-17
我也是一樣的,換了this之后就用不了,我還以為是編譯器的問題呢