見(jiàn)注釋里的提問(wèn),問(wèn)題還是給某個(gè)事件調(diào)用函數(shù)加不加括號(hào)的問(wèn)題;
<!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; */ /*不加括號(hào),就是正常的,鼠標(biāo)放上,開始移動(dòng);*/
div1.onmouseover=startMove(); /*為什么加了括號(hào)之后,一打開就開始移動(dòng),鼠標(biāo)不放上去也是移動(dòng)的;*/
};
var timer=null;
function startMove(){
var div1=document.getElementById("div1");
timer=setInterval(
function(){
if(div1.offsetLeft==0){clearInterval(timer)}
else {div1.style.left=div1.offsetLeft+10+'px'}}
? ,30);
}
</script>
</head>
<body>
<div id="div1">
<span id="share">分享</span>
</div>
</body>
</html>
2016-11-20
首先弄清楚startMove; 和startMove();區(qū)別,第一個(gè)是函數(shù)本身,第二個(gè)是函數(shù)執(zhí)行的結(jié)果。
假設(shè)a = b + c,那此公式會(huì)先計(jì)算b+c再賦值給a。
我們看div1.onmouseover=startMove();,先計(jì)算startMove(),那么此時(shí)已經(jīng)運(yùn)行了startMove函數(shù)并執(zhí)行了函數(shù),所以一打開就會(huì)看到物體移動(dòng)的現(xiàn)象。而我們看div1.onmouseover=startMove;是將函數(shù)代碼本身賦值給前面,當(dāng)鼠標(biāo)經(jīng)過(guò)的時(shí)候,div1.onmouseover會(huì)變成如下所示:
如同,div1.onmouseover = function(){ alert("aaa");},成功執(zhí)行函數(shù)。
2016-11-16
div1.onmouseover=startMove; /*不加括號(hào),就是正常的,鼠標(biāo)滑過(guò),開始移動(dòng),表示鼠標(biāo)滑過(guò),調(diào)用這個(gè)函數(shù)*/
div1.onmouseover=startMove();
/*加了括號(hào)之后,一打開就開始移動(dòng),表示,把函數(shù)執(zhí)行的結(jié)果給div1的鼠標(biāo)滑過(guò)事件,所以會(huì)去先執(zhí)行函數(shù),因?yàn)楹瘮?shù)執(zhí)行的結(jié)果就是offsetLeft==0,然后把這個(gè)結(jié)果給div1的鼠標(biāo)滑過(guò)事件,所以會(huì)出現(xiàn)一打開就跑,這是為了得到函數(shù)執(zhí)行的結(jié)果*/
這樣解釋對(duì)不對(duì)?
2016-11-16
函數(shù)名加括號(hào)表示調(diào)用并執(zhí)行該函數(shù),你alert一下有括號(hào)和沒(méi)括號(hào),alert(startMove),,,alert(startMove())
2016-11-16
函數(shù)名加括號(hào)表示調(diào)用并執(zhí)行該函數(shù),你alert一下有括號(hào)和沒(méi)括號(hào),alert(startMove),,,alert(startMove())