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

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

我用DOM2級綁定多個事件,為什么要把定時器取消才能執行?

<!DOCTYPE?html>
<html>
<head>
<meta?charset="UTF-8">
<title>鏈式動畫</title>
<style?type="text/css">
*{margin:0;padding:0;}
ul,li{
list-style:none;
}
ul?li{
width:200px;
height:100px;
background:yellow;
margin-bottom:20px;
border:4px?solid?#000;
filter:alpha(opacity=30);
opacity:0.3;
}
</style>
<script?src="move.js"></script>

</head>
<body>
<ul>
<li?id="li1"></li>
</ul>
<script?type="text/javascript">

var?Li=document.getElementById('li1');
Li.addEventListener('mouseover',function(){startMove(Li,'width',400);},false);

Li.addEventListener('mouseover',function(){startMove(Li,'height',200);},false);

Li.addEventListener('mouseover',function(){startMove(Li,'opacity',100);},false);

</script>
</body>
</html>

接下來是引入的js部分

function?getStyle(obj,attr){//傳入兩個參數:對象和屬性
	if?(obj.currentStyle)?{??//currentStyle針對ie瀏覽器
		return?obj.currentStyle[attr];
	}?else?{???//getComputerStyle針對firefox瀏覽器
		return?getComputedStyle(obj,false)[attr];
	}
}
//?var?timer=null;
function?startMove(obj,attr,iTarget,fn){
	//?clearInterval(obj.timer);
	obj.timer=setInterval(function(){
		//1、取當前的值
		var?icur=0;
		if?(attr=='opacity')?{
			icur=Math.round(parseFloat(getStyle(obj,attr))*100);
			//*100是為了和17行代碼中的透明度對應
		}?else?{
			icur=parseInt(getStyle(obj,attr));
		}
		//2、計算速度
		var?speed=(iTarget-icur)/8;
		speed=speed>0?Math.ceil(speed):Math.floor(speed);
		//3、檢測停止
		if?(icur==iTarget)?{
			clearInterval(obj.timer);
			if?(fn)?{
				fn();
			}
		}?else?{
			if?(attr=='opacity')?{
				obj.style.filter='alpha(opacity='+(icur+speed)+')';//針對ie瀏覽器
				obj.style.opacity=(icur+speed)/100;//針對firefox和chrome瀏覽器的
			}?else?{
			//?obj.style.width=icur+speed+'px';
			obj.style[attr]=icur+speed+'px';
			}
		}
	},30)
}


正在回答

2 回答

分別給li添加mouseover事件后,后一個li里面的startMove()里面的clearInterval()會清除上一個li的startMove()函數里的定時器,所以就只有最后一個有效果了

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

關于js部分第10行,清楚定時器,為什么要注釋掉才有效果,如果不注釋掉,只有透明度的變化,想不明白

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

舉報

0/150
提交
取消

我用DOM2級綁定多個事件,為什么要把定時器取消才能執行?

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

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

幫助反饋 APP下載

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

公眾號

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