亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

startMove傳入的參數,用指定的可以實現鏈式效果,但是用this卻不行,求解

<!DOCTYPE?html>
<html>
<head>
<meta?charset="UTF-8">
<title>任意屬性值</title>
<style?type="text/css">
*{
margin:?0?auto;
padding:?0;

}

#box?{
top:50px;
left:50px;
position:?absolute;
list-style:?none;
width:200px;
height:?200px;
background-color:?yellow;
opacity:0.3;
border:?4px?solid?black;
*/
}
</style>
<script?type="text/javascript">
window.onload=function(){
var?box_1=document.getElementById('box');
box_1.onmouseover=function(){
startMove(this,'height',400,function(){
startMove(this,'opacity',100);
});};//將這里的this?換成指定的box_1就可以實現鏈式效果。不知道為什么this不行。
box_1.onmouseout=function(){
startMove(this,'height',200);};
var?timer=null;
function?getStyle(obj,attr){
if(obj.currentStyle){
return?obj.currentStyle[attr];
}else{
return?getComputedStyle(obj,false)[attr];
}
}

function?startMove(obj,attr,tar,fn){
clearInterval(timer);
timer=setInterval(function(){
var?icurr=0;
if(attr=='opacity'){
icurr=Math.round(parseFloat(getStyle(obj,attr))*100);
}else{
icurr=parseInt(getStyle(obj,attr));}
var?incre=(tar-icurr)/10;
incre=incre>0?Math.ceil(incre):Math.floor(incre);
if(icurr==tar){
clearInterval(timer);
if(fn){
fn();}
}else{
if(attr=='opacity'){
obj.style[attr]=(icurr+incre)/100;}
else{
obj.style[attr]=icurr+incre+'px';}
}
},30)

}

}
</script>
</head>
<body>
<div?id='box'>
</div>

</body>
</html>


正在回答

3 回答

?對象不一樣,box_1是一個具體的對象。而this這是是win本身。

0 回復 有任何疑惑可以回復我~
#1

myrtis 提問者

但是前面有box_1.onmouseover,那這里的this指代的不就是box_1嗎?
2015-09-25 回復 有任何疑惑可以回復我~
#2

myrtis 提問者

而且不加回調函數的時候都是沒問題的,應該就是回調函數里 的this出了問題,但是我不知道是為什么,不知道回調函數里的this指代的是什么
2015-09-25 回復 有任何疑惑可以回復我~
#3

Y_du 回復 myrtis 提問者

作用域不一樣,你在box_1.onmouseover這個函數前定義一個var _this = this。如何在你的函數中使用_this而不是this。
2015-09-26 回復 有任何疑惑可以回復我~
#4

myrtis 提問者 回復 Y_du

嗯,按照你說的就問題解決了,雖然還不是很明白具體的機制是怎么回事,不過相信以后隨著學習的深入就漸漸懂了。謝謝~
2015-09-26 回復 有任何疑惑可以回復我~
#5

Y_du 回復 myrtis 提問者

參數的作用域不一樣。
2015-09-26 回復 有任何疑惑可以回復我~
查看2條回復

oBtnPrev.onmouseout=oMarkLeft.onmouseout=function(){

? ? ? startMove(oBtnPrev,'opacity',0);

? ? ? };

為什么我的谷歌運行總是錯誤了


0 回復 有任何疑惑可以回復我~

this是指單擊事件的目標節點,第一次是有效的,到了第二次調用this的時候this就沒有對應的值了,第一次用的this沒有被傳進第二個回調函數

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

startMove傳入的參數,用指定的可以實現鏈式效果,但是用this卻不行,求解

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號