å¦ä½é²æ¢é¼ æ 移åºç§»å
¥åå
ç´ è§¦åmouseoutåmouseoveräºä»¶:
å
³äºmouseoutåmouseoveräºä»¶è¿éå°±ä¸å¤ä»ç»äºï¼å
·ä½å¯ä»¥åé
javascriptçmouseoutåmouseoveräºä»¶è¯¦è§£ä¸ç« èã
è¿ä¸¤ä¸ªäºä»¶æä¸ä¸ªå
±åç¹ç¹ï¼é£å°±æ¯å½é¼ æ 移å
¥æè
移åºåå
ç´ çæ¶åé½ä¼è§¦å对åºçäºä»¶ï¼è¿ä¸ªå¾å¾å¨å®é
åºç¨ä¸æ¯ä¸éè¦çï¼æè
说è½å¤å¸¦æ¥å¾å¤§çå°æ°ï¼ä¸é¢å°±éè¿å®ä¾ä»£ç ä»ç»ä¸ä¸å¦ä½é¿å
æ¤å½±åã
代ç å®ä¾å¦ä¸:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="author" content="
http://www.softwhy.com/" />
<title>èèé¨è½</title>
<style type="text/css">
#box{
width:200px;
height:200px;
background-color:red;
padding:50px;
}
#inner{
width:50px;
height:50px;
background-color:blue;
}
</style>
<script type="text/javascript">
function isMouseLeaveOrEnter(e, handler) {
var reltg=e.relatedTarget?e.relatedTarget:e.type=='mouseout'?e.toElement:e.fromElement;
while (reltg && reltg != handler){
reltg = reltg.parentNode;
}
return (reltg != handler);
}
window.onload=function(){
var box=document.getElementById("box");
var num=document.getElementById("num");
var count=0;
box.onmouseout=function(ev){
var ev=ev||window.event;
if(!isMouseLeaveOrEnter(ev,box)){
return false;
}
num.innerHTML=count++;
}
}
</script>
</head>
<body>
<div id="box">
<div id="inner"></div>
</div>
<div>äºä»¶è§¦åäº<span id="num"></span>次</div>
</body>
</html>
以ä¸ä»£ç å®ç°äºæ们çè¦æ±ï¼å¯ä»¥æ¶é¤é¼ æ æé移å
¥æè
移åºåå
ç´ æ带æ¥çå°æ°ï¼è½ç¶ä¾ååªæ¯mouseoutäºä»¶çï¼å¯¹äºmouseoveräºä»¶ä¹æ¯å¦æ¤ï¼ä¸é¢å°±ä»ç»ä¸ä¸æ¤ä»£ç çå®ç°è¿ç¨:
ä¸.å®ç°åç:
å½è§¦åè¿ä¸ªäºä»¶çæ¶åï¼äºä»¶å¯¹è±¡é½ä¼æä¸ä¸ªrelatedTargetå±æ§ï¼æ åæµè§å¨æ¯æï¼IE8åIE8以ä¸æµè§å¨éè¦ä½¿ç¨å
¶ä»å±æ§è¿åï¼ï¼å®è½å¤è¿åä¸ä¸ªä¸äºä»¶ç®æ èç¹ç¸å
³çèç¹ï¼å¦æè¿åçèç¹é½æ¯æ³¨åäºä»¶ç对象çååå
ç´ ï¼è¯´ææ¯æ们å°è¦æ¶é¤çäºä»¶è§¦åï¼æ以åªè¦å¤æå¦ærelatedTargetè¿åçèç¹æ¯ååèç¹ï¼å°±è¿è¡ç¹æ®çå¤çå°±å¯ä»¥äºï¼å
·ä½å¯ä»¥åé
代ç 注éã
äº.代ç 注é:
1.function
isMouseLeaveOrEnter(e, handler)
{}ï¼æ¤å½æ°æ¯åè½çæ ¸å¿ï¼å¯ä»¥è¿åä¸ä¸ªå¸å°å¼ç¨æ¥æ è¯relatedTargetå±æ§è¿åçæ¯å¦æ¯ååèç¹ï¼å¦æè¿åtrue说æä¸æ¯ååèç¹ï¼å¦ææ¯falseå说ææ¯ååèç¹ã第ä¸ä¸ªåæ°æ¯äºä»¶å¯¹è±¡ï¼ç¬¬äºä¸ªæ¯æ³¨åäºä»¶å¤çå½æ°ç对象ã
2.var reltg = e.relatedTarget ? e.relatedTarget : e.type == 'mouseout' ? e.toElement : e.fromElementï¼è¿åäºä»¶å
³è对象ï¼ç¸å
³å±æ§å¯ä»¥åé
ç¸å
³é
读ã
3.while
(reltg && reltg != handler){reltg =
reltg.parentNode}ï¼ä¸ä¸ªwhile循ç¯ï¼æ¡ä»¶æ¯ï¼å¦æreltgåå¨å¹¶ä¸ä¸æ¯å½å注åäºä»¶çèç¹ï¼å¦ææ¡ä»¶ä¸è¢«æ»¡è¶³ï¼é£ä¹å°è·åreltgçç¶èç¹ç¶ååèµå¼ç»reltgï¼å¦æ¤å¾ªç¯å¾å¤ãè¿ä¸ªè¯å¥çä½ç¨æ¯å¤æç¸å
³å
ç´ æ¯å¦å¼ååå
ç´ ï¼å¦ææ¯çè¯ï¼æ»ä¼æä¸ä¸ªreltg.parentNodeä¼åhandlerç¸åã
4.return (reltg != handler)ï¼è¿åä¸ä¸ªå¸å°å¼ï¼å¦æç¸åå°±è¿åfalseï¼å¦æä¸ç¸åå°±è¿åtrueã