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

为什么效果不对,谁能帮我看一下

<!Doctype html>
<html>
<head>
  <meta charset="utf-8">
  <title></title>
  <style>
    #oMove{width:280px;height:140px;background-color:#eaeaea;}
	#oMove a{display:block;width:68px;height:68px;margin:1px;background-color:#fff;float:left;text-align:center;position:relative;}
	#oMove i{position:absolute;top:20px;margin-left:-10px;filter:alpha(opacity:100);opacity:1;}
	#oMove p{color:#666;margin-top:48px;}
	#oMove p:hover{color:#f40;}
  </style>
</head>
<body>
  <div id="oMove">
    <a><i><img src="icon.png" alt="icon"></i><p>games</p></a>
    <a><i><img src="icon.png" alt="icon"></i><p>games</p></a>
    <a><i><img src="icon.png" alt="icon"></i><p>games</p></a>
    <a><i><img src="icon.png" alt="icon"></i><p>games</p></a>
    <a><i><img src="icon.png" alt="icon"></i><p>games</p></a>
    <a><i><img src="icon.png" alt="icon"></i><p>games</p></a>
    <a><i><img src="icon.png" alt="icon"></i><p>games</p></a>
    <a><i><img src="icon.png" alt="icon"></i><p>games</p></a>
  </div>
  <script>
    window.onload=function(){
	  var oMove=document.getElementById("oMove");
	  var alis=oMove.getElementsByTagName("a");
	  for(var i=0;i<alis.length;i++){
		alis[i].onmouseover=function(){
	      var _this=this.getElementsByTagName("i")[0];
		  startMove(_this,{top:-25,opacity:0},function(){
		    _this.style.top=30+"px";
			startMove(_this,{top:20,opacity:100});
		  });
		}
	  }
	}
function getStyle(obj,attr){
  if(obj.currentStyle){
    return obj.currentStyle[attr];
  }else{
    return getComputedStyle(obj,false)[attr];
  }
}
function startMove(obj,json,fn){
  var flag=true;
  clearInterval(obj.timer);
  obj.timer=setInterval(function(){
    for(var attr in json){
	  var icur;
	  if(attr=='opacity'){
	    icur=Math.round(parseFloat(getStyle(obj,attr))*100);
	  }else{
	    icur=parseInt(getStyle(obj,attr));
	  }
	  var speed=(json[attr]-icur)/8;
	  speed= speed>0?Math.ceil(speed):Math.floor(speed);
	  if(json[attr]!=icur){
	    flag=false;
	  }
	  if(attr=='opacity'){
	  obj.style.filter='alpha(opacity='+icur+speed+')';
	  obj.style.opacity=(icur+speed)/100;
	  }else{
	    obj.style[attr]=icur+speed+'px';
	  }
	  if(flag){
	    clearInterval(obj.timer);
	    if(fn){
	      fn();
	    }
	  }
    }
  },3)
}
  </script>
</body>
</html>


正在回答

2 回答

找了我半个小时。。

你的flag 放到定时器里面。

不然等到

 if(json[attr]!=icur){

        flag=false;

      }

你的flag还是为false

的时候, 你的flag 因为之前是false, 所以一直都是false

function startMove(obj,json,fn){

 

  clearInterval(obj.timer);

  obj.timer=setInterval(function(){

  var flag=true;    

for(var attr in json){

      var icur;

      if(attr=='opacity'){


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

第四十八行var flag=true;要定义在定时器内,老师讲错了的~~ 定义在外面的话就只执行了一次flag=true;而当flag=flase的时候就不会变回去了,就不会再执行fn()了~

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

风中过客

早点刷新页面我就不用debug了 。。。
2016-06-29 回复 有任何疑惑可以回复我~
#2

qq_飞扬_13 回复 风中过客

哈哈,我也找了十几分钟
2016-06-29 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么效果不对,谁能帮我看一下

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