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

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

為什么鼠標移入一次才觸發一次而不是鏈式的?

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>relative樣式</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:2px solid #000;
?? filter:alpha(opacity:30);
?? opacity: 0.3;

????
?? }
</style>

<script type="text/javascript">
window.onload=function(){
?var Li=document.getElementById("li1");
?
?Li.onmouseover=function(){
??startMove(Li,{width:400},function(){
???startMove(Li,{height:200},function(){
????startMove(Li,{opacity:100});
???});
??});
?}
?
}

function getStyle(obj,attr){

??? if(obj.currentStyle){
??????? return obj.currentStyle[attr];
??? }
?else{
??????? return getComputedStyle(obj,false)[attr];
??? }
}


var alpha=30;
function startMove(obj,json,fn){
??var flag=true;
??clearInterval(obj.timer);
??obj.timer=setInterval(function(){
???for(var attr in json){
???var icur=0;
????if(attr=='opacity'){
?????icur=Math.round(parseFloat(getStyle(obj,attr))*100);
????}
????else{
?????icur=parseInt(getStyle(obj,attr));
????}
?
????var a=(json[attr]-icur)/8;
????a=a>0?Math.ceil(a):Math.floor(a);
????if(icur!==json[attr]){
?????flag=false;
????}
???
????if(attr=='opacity'){
?????obj.style.filter='alpha(opacity:'+(icur+a)+')';

?????obj.style.opacity=(icur+a)/100;
????}
????else{
?????obj.style[attr]=icur+a+'px';
????}
????if(flag){
?????clearInterval(obj.timer);
?????if(fn){
??????fn();
?????}
????}
?
???}
?
??},30)
?}

?


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

正在回答

1 回答

解決方法:var flag = true;這句要放在定時器內。

原因:如果放在外面,第一次運行傳入定時器內的flag值為true,第一遍檢測下列代碼時

????????if (icur != json[attr]){

???????? flag = false;

???????? }

返回的flag值為false,接下來30毫秒又重新執行一遍定時器,flag的值還是為false,直到icur全都等于json[attr]時flag的值依舊不變,因此不會執行停止定時器的代碼。換句話說,定時器在重復執行speed為0的變化。

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

慕先生0450854 提問者

非常感謝!
2016-07-04 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

為什么鼠標移入一次才觸發一次而不是鏈式的?

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

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

幫助反饋 APP下載

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

公眾號

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