第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

startMove(this,100); 為什么這里的this 不能用 oDiv[i]替代????

window.onload=function (){

? ?var oDiv=document.getElementsByTagName('div');

? ?for(i=0;i<oDiv.length;i++){

? ?oDiv[i].timer=null;

? ?oDiv[i].alpha=30;

? ?oDiv[i].onmouseover=function () {startMove(this,100);} ?//為什么這里的this 不能用 oDiv[i]替代????

? ?oDiv[i].onmouseout=function(){startMove(this,30);}

}

}


function startMove(obj,iTarget) {

var speed=obj.alpha>iTarget?speed=-5:speed=5;

? ?clearInterval(obj.timer);

? ?obj.timer=setInterval( function(){

? ? if (obj.alpha==iTarget) { ?clearInterval(obj.timer);}?

? ? else {obj.alpha+=speed;obj.style.opacity=obj.alpha/100;}

? ?},30)?

}?

按我的理解, 這里的this其實本質(zhì)就是oDiv[i]

如果改了了oDiv[i]以后, 報錯提示obj.alpha 錯誤, 為什么?

正在回答

2 回答

函數(shù)是先定義再執(zhí)行的,比如你寫的

?oDiv[i].onmouseover=function () {startMove(this,100);} ?//為什么這里的this 不能用 oDiv[i]替代????

這段代碼在被解析的時候是這樣的?oDiv[i].onmouseover=function () {},

里面的代碼還不會被執(zhí)行,當(dāng)所有函數(shù)被定義完之后在執(zhí)行里面的代碼,而這個時候oDiv[i]已經(jīng)被釋放掉了,不存在了,你再寫oDiv[i]自然就會報錯 。

這只是this的其中一種用法,還有很多,基本用法就是this指向當(dāng)前調(diào)用函數(shù)的那個對象,這里的對象就是oDiv[i],其他還有很多方法就不說了,你可以自己搜下

0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

rainy_li3676598 提問者

里面的代碼還不會被執(zhí)行,當(dāng)所有函數(shù)被定義完之后在執(zhí)行里面的代碼, 你說的“當(dāng)所有函數(shù)被定義完之后在執(zhí)行里面的代碼,” 這個 “所有函數(shù)被 定義完成后”指的是 哪里的函數(shù)? function里面這個 , 還是說我整 個onload里面的?
2016-11-15 回復(fù) 有任何疑惑可以回復(fù)我~
#2

冷月詩魂

額,回想一下發(fā)現(xiàn)不對,oDiv[i]并沒有被釋放掉,我錯了。。
2016-11-15 回復(fù) 有任何疑惑可以回復(fù)我~
#3

冷月詩魂 回復(fù) rainy_li3676598 提問者

onload里面的。 其實寫oDiv[i]也行的,但i的值循環(huán)完后就被加了1,所以不存在,你寫oDiv[i-1] ( 1 你可以改成2,3...你就知道了 )
2016-11-15 回復(fù) 有任何疑惑可以回復(fù)我~

個人感覺此處的this應(yīng)該是指針的效果,指向的就是鼠標(biāo)滑過的div,

window.onload = function(){
? ?var aLi = document.getElementsByTagName("li");---------aLi[i]的生命周期只在這個大花括號中
? ?for(var i=0;i<aLi.length;i++){
? ? ? ?aLi[i].timer = null;
? ? ? ?aLi[i].alpha = 0;
? ? ? ?aLi[i].onmouseover = myMouseOver;
? ?}
}
function myMouseOver(){
? ?startMove(this,100,'opacity');--------此處如果是aLi[i]那么對于這個方法來說就沒有這個變量存在
}

以上是自己試驗的結(jié)果,不知道對不對,如果不對告訴我下

0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

rainy_li3676598 提問者

應(yīng)該不是你這樣的,因為在onload里面開始已經(jīng)申明了aLi,然后startMove是在里面,是可以調(diào)用的,函數(shù)申明是可以給子函數(shù)用的
2016-11-12 回復(fù) 有任何疑惑可以回復(fù)我~

舉報

0/150
提交
取消

startMove(this,100); 為什么這里的this 不能用 oDiv[i]替代????

我要回答 關(guān)注問題
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號