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

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

完善代碼之后反而發現一個問題,你們遇到了類似的問題嗎

window.onload?=?function(){
	var?li1?=?document.getElementById('li1');
	li1,onmouseout?=?function(){
		startMove(li1,{width:400})
	}
}

只改變一個屬性,加鼠標移開事件,在別的地方移動鼠標也會觸發,加上onmouseover之后也是這樣

完整代碼如下:

<!DOCTYPE>
<html>
<head>
<meta?http-equiv="Content-Type"?content="text/html;?charset=utf-8"?/>
	<title>無標題</title>
<style?type="text/css">
*{
	margin:0;
	padding:0;
}
li{
	list-style:none;
	height:100px;
	width:200px;
	background-color:#aaa;
	margin-top:20px;
	border:2px?solid?black;
	opacity:0.4;
	filter:alpha(opacity?=?40);
	position:relative;
	left:0;
	top:0;
}
</style>
<script?type="text/javascript">
//?startMove(obj,attr,mit,fn)?attr,mit用json表示,mit<=>json[attr];
function?startMove(obj,json,fn){
	clearInterval(obj.timer);
	//?定義flag用來檢測同時運動時是否全部完成運動,完成為true
	var?flag?=?true;
	obj.timer?=?setInterval(function(){
		//?for?in?循環包含整個定時器函數
		for(var?attr?in?json){
			//?1,取當前值
			var?icur?=0;
			if(attr=='opacity'){
				//?360是chrome內核得到的opacity為0-100;
				document.title?=?parseFloat(getStyle(obj,attr));
				icur?=?Math.round(parseFloat(getStyle(obj,attr))*100);
			}else{
				icur?=?parseInt(getStyle(obj,attr));
			}


			//?2,計算速度
			//?var?speed?=?0;
			var?speed?=?(json[attr]-icur)/20;
			speed?=?speed>0?Math.ceil((json[attr]-icur)/20):Math.floor(speed);
			//?if(mit>icur){
			//?	speed?=?5;
			//?}else{
			//?	speed?=?-5;
			//?}


			//?3,檢測停止
			if(json[attr]!=icur){
				flag?=?false;
			}
			//?還有運動未完成,
			if(attr=='opacity'){
				obj.style.opacity?=?(icur?+?speed)/100;
				obj.style.filter?=?'alpha(opacity='+?(icur?+?speed)?+')';
			}else{
				obj.style[attr]?=?icur?+?speed?+?'px';
			}
			if(flag){
				clearInterval(timer);
				if(fn){
					fn();
				}
			}

		}
	},30)
}
function?getStyle(obj,attr){
	if(obj.currentStyle){
		return?obj.currentStyle;
	}else{
		return?getComputedStyle(obj,false)[attr];
	}
}
</script>

<script?type="text/javascript">
window.onload?=?function(){
	var?li1?=?document.getElementById('li1');
	li1,onmouseout?=?function(){
		startMove(li1,{width:400})
	}
}
</script>

</head>
<body>
<ul>
	<li?id="li1"></li>
</ul>
</body>
</html>


正在回答

2 回答

li1,onmouseout?=?function(){}//li1后面是點,不是逗號??,?改成?li1.onmouseout


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

塵一樣重要的 提問者

謝謝!忽略了最小的地方。
2015-12-20 回復 有任何疑惑可以回復我~

? if(flag){

????????????????clearInterval(timer);

????????????????if(fn){

????????????????????fn();

????????????????}

????????????}

這部分代碼要寫在for-in循環的外面,否則內調fn()會執行好幾次。

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

舉報

0/150
提交
取消

完善代碼之后反而發現一個問題,你們遇到了類似的問題嗎

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

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

幫助反饋 APP下載

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

公眾號

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