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

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

看里面的疑問:疑問:alert里面這樣用,第一次顯示不出left值,后面才可以,為什么?換成offsetLeft第一次就可以顯示出來

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>practice</title>

<style type="text/css">

*{margin:0px;padding:0px;}

#div1 {position:relative;left:-200px;width:200px;height:200px;margin-top:50px;background-color: pink;}

#share{background-color:lightblue;width:20px;height:50px;position: absolute;left:200px;top:75px;}

</style>

<script type="text/javascript">

window.onload=function(){

var div1=document.getElementById("div1");

div1.onmouseover=startMove; /*不加括號,就是正常的,鼠標(biāo)滑過,開始移動,表示鼠標(biāo)滑過,調(diào)用這個函數(shù)*/

/*div1.onmouseover=startMove();*/

/*加了括號之后,一打開就開始移動,表示,把函數(shù)執(zhí)行的結(jié)果給div1的鼠標(biāo)滑過事件,所以會去先執(zhí)行函數(shù),因?yàn)楹瘮?shù)執(zhí)行的結(jié)果就是offsetLeft==0,然后把這個結(jié)果給div1的鼠標(biāo)滑過事件,所以會出現(xiàn)一打開就跑,這是為了得到函數(shù)執(zhí)行的結(jié)果*/


};


function startMove(){

var div1=document.getElementById("div1");

var timer=setInterval(

function(){

if(div1.offsetLeft==0){clearInterval(timer)}//判斷要計算,所以不能帶'px',用offsetLeft

else {alert(div1.style.left);//offsetLeft顯示無'px',style.left顯示有'px'

//疑問:alert里面這樣用,第一次顯示不出left值,后面才可以,為什么?換成offsetLeft第一次就可以顯示出來

div1.style.left=div1.offsetLeft+10+'px';//這個地方要+—,最好不帶'px'

}}

? ,500);

}


</script>

</head>

<body>


<div id="div1">

<span id="share">分享</span>

</div>

</body>

</html>


正在回答

2 回答

首先,要想第一次就顯示出style.left的值,必須在元素里設(shè)置style,如<div id="div1" style="position:relative;left:-200px;"> ,所以你的問題中第一次顯示不出left值,是因?yàn)椴]有在style中設(shè)置,而第一次alert之后你設(shè)置了div1.style.left,后面的alert(div1.style.left)都能輸出值。

其次,弄明白left這些位置值都是我們賦予給它的,我們沒在style中去設(shè)置,第一次自然顯示不出來。而offesetLeft瀏覽器會根據(jù)元素位置自動給offsetLeft賦值。

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

慕粉18221508921 提問者

那放在前面的css里面不是設(shè)置了么?
2016-11-20 回復(fù) 有任何疑惑可以回復(fù)我~
#2

幕布斯7328391 回復(fù) 慕粉18221508921 提問者

任何支持style特性的html元素在js中都有一個對應(yīng)的style屬性,這個對象包含著經(jīng)HTML style特性指定的所有樣式信息,但不包含與外部樣式表或嵌入樣式表經(jīng)層疊而來的樣式
2016-11-20 回復(fù) 有任何疑惑可以回復(fù)我~

offsetLsft打印出來表示是當(dāng)前div1的left值

而div1.style.left在js中只是作為我們要改變的屬性,所以第一次我們又沒有改變它,當(dāng)然顯示不出任何值,只有當(dāng)它有改變的時候才有值

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

慕粉18221508921 提問者

邏輯好像有道理,但是感覺不是很能理解,能理解部分吧
2016-11-17 回復(fù) 有任何疑惑可以回復(fù)我~

舉報

0/150
提交
取消

看里面的疑問:疑問:alert里面這樣用,第一次顯示不出left值,后面才可以,為什么?換成offsetLeft第一次就可以顯示出來

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

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

幫助反饋 APP下載

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

公眾號

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