为了账号安全,请及时绑定邮箱和手机立即绑定

求解:鼠标离开或者划过的时候,Div一直在闪?根本停不下来

<!doctype html>
<html>
<head>
 <style type="text/css">
 body,div{
 margin:0;
 padding:0;
 }
 div{
 width:200px;
 height:200px;
 margin:10px;
 float:left;
 background:red;
 opacity:0.3;
 }
 </style>
 <script>
 window.onload=function(){
   var oDiv=document.getElementsByTagName("div");
   for(var i=0;i<oDiv.length;i++){
     oDiv[i].ialpha=0.3;
     oDiv[i].onmouseover=function(){
       startMove(this,1);
     }
     oDiv[i].onmouseout=function(){
       startMove(this,0.3);
     }
   }
 }
 //var timer=null;
 //var ialpha=0.3;
 function startMove(obj,iTarget){
   //var oDiv=document.getElementById("div1");
   clearInterval(obj.timer);
   timer=setInterval(function(){
     var speed=0;
     if(obj.ialpha>iTarget){
    speed=-0.1;
    }else if(obj.ialpha<iTarget){
    speed=0.1;
    }
    if(obj.ialpha==iTarget){
      clearInterval(obj.timer);
    }else{
      obj.ialpha+=speed;
      obj.style.opacity=obj.ialpha;
    }
   },1000)
 }
 </script>
</head>
<body>
 <div id="div1"></div>
 <div id="div2"></div>
 <div id="div3"></div>
 <div id="div4"></div>
</body>
</html>

firefox偶尔ialpha=0.9999999999999999这种

chrome中  opacity=09/1/1.1;opacity=02/0.3/0.4一直在变化

(fedora)

正在回答

2 回答

估计是吃了炫迈了吧。。

经过我的检查,你的程序至少有3处错误和1处不恰当的地方。

试试下面的代码,就是你想要的效果

<!DOCTYPE html>
<html>
<head>
 <style type="text/css">
 body,div{
 margin:0;
 padding:0;
 }
 div{
 width:200px;
 height:200px;
 margin:10px;
 float:left;
 background:red;
 opacity:0.3;
 }
 </style>
 <script>
 window.onload=function(){
   var oDiv=document.getElementsByTagName("div");
   for(var i=0;i<oDiv.length;i++){
     oDiv[i].ialpha=0.3;
     oDiv[i].onmouseover=function(){
       startMove(this,1);
     }
     oDiv[i].onmouseout=function(){
       startMove(this,0.3);
     }
   }
 }
 //var timer=null;
 //var ialpha=0.3;
 function startMove(obj,iTarget){
   //var oDiv=document.getElementById("div1");
   clearInterval(obj.timer);
   var speed=0;
   // 第一处错误:timer 前面没有写 obj.
   obj.timer=setInterval(function(){
     // 第二处错误:把速度写在了函数内部
     // var speed=0;
     if(obj.ialpha>iTarget){
        speed=-0.1;
     }else if(obj.ialpha<iTarget){
        speed=0.1;
     }
     // 第三处错误:运动停止条件判断不正确。
     if(Math.abs(obj.ialpha - iTarget) <= 0.1){
        clearInterval(obj.timer);
     }else{
        obj.ialpha+=speed;
        obj.style.opacity=obj.ialpha;
     }
     // 不恰当之处:间隔时间写的太长了,我改成了30。。运动相关的函数间隔写30ms比较好。。
   },30)
 }
 </script>
</head>
<body>
 <div id="div1"></div>
 <div id="div2"></div>
 <div id="div3"></div>
 <div id="div4"></div>
</body>
</html>


2 回复 有任何疑惑可以回复我~
#1

AL_Cherish 提问者

太棒了!谢谢!!
2015-12-23 回复 有任何疑惑可以回复我~

我用浏览器调试发现报了3处错 您可以看看是不是语法 或者格式错了

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

举报

0/150
提交
取消

求解:鼠标离开或者划过的时候,Div一直在闪?根本停不下来

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信