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

麻烦帮忙看下,我写出来的代码没有效果

<!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;opacity:0.3;filter:alpha(opacity:30);border: #ccc 4px solid;}

</style>

</head>

<script type="text/javascript" src="js/move.js" ></script>

<script>

window.onload = function(){

var oLi=document.getElementById('li1');

oLi.onmouseover = function(){

startMove=(oLi,{width:400,height:200,opacity:100});

}

oLi.onmouseout = function(){

startMove=(oLi,{width:200,height:100,opacity:30});

}

}

</script>


<body>

<ul>

<li id="li1"></li>

</ul>

</body>

</html>


正在回答

4 回答

修改后的代码:

<!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;opacity:0.3;filter:alpha(opacity:30);border: #ccc 4px solid;}
  </style>
 </head>
 <script type="text/javascript"  >
  function startMove(obj, json, fn) {	
   clearInterval(obj.timer);		
   obj.timer = setInterval(function() {		
    var flag = true;		
    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));		
     }				
     //speed		
     var iSpeed = (json[attr] - iCur) / 8;		
     iSpeed = iSpeed>0?Math.ceil(iSpeed):Math.floor(iSpeed);				
     //stop		
     if(iCur != json[attr]) {		
      flag = false;		
     }		
     if(attr == 'opacity') {		
      obj.style.filter = 'alpha(opacity:'+ (iCur + iSpeed) +')';		
      obj.style.opacity = (iCur + iSpeed) / 100;		
     } else {		
      obj.style[attr] = iCur + iSpeed + 'px';		
     }	
    }	
    if(flag){	
     clearInterval(obj.timer);	
     if(fn){		
      fn();		
     }	
    }		
   }, 30)
  }
  function getStyle(obj, attr) {
   if(obj.currentStyle) {
    return obj.currentStyle[attr];
   } else {
    return getComputedStyle(obj, false)[attr];
   }
  }
 </script>
 
 <script>
  window.onload = function(){
   var oLi=document.getElementById('li1');
   oLi.onmouseover = function(){
    startMove(oLi,{width:400,height:200,opacity:100});
   }
   oLi.onmouseout = function(){
    startMove(oLi,{width:200,height:100,opacity:30});
   }
  }
 </script>
 <body>
  <ul>
   <li id="li1"></li>
  </ul>
 </body>
</html>


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

补充,你的另一些小错误:

代码块里

//你的代码
if(iCur == json[attr]){flag=false};
//正确代码
if(iCur != json[attr]){flag=false};

true写成了ture.

startMove(a,b,c,d)写成了startMove = (a,b,c,d)

还有一些没有写分号的错误,一行代码应该以括号或者分号结束.

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

Fishzz

还有最后一个 obj.timer写成了obj,timer
2018-06-19 回复 有任何疑惑可以回复我~

你的 flag代码位置存在错误.

function(){
    var flag = true;
    for(i in json){
        //your codes
        if(flag){
            clearInterval(obj.timer)
        }
    }
}

正确的结构应该是:

1,设置flag.

2,for in循环你的代码.

3,判断flag

即如下:

function(){
    flag = true
    for(i in json){
        //你的代码
    }
    if(flag){clearInterval(obj.timer)}
}
0 回复 有任何疑惑可以回复我~

function startMove(obj, json, fn) {

clearInterval(obj, timer);

obj.timer = setInterval(function() {

var flag = ture;

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));

}


//speed

var iSpeed = (json[attr] - iCur) / 8;

iSpeed = iSpeed>0?Math.ceil(iSpeed):Math.floor(iSpeed);


//stop

if(iCur == json[attr]) {

flag = false;

}

if(attr == 'opacity') {

obj.style.filter = 'alpha(opacity:' + (iCur + iSpeed) + ')';

obj.style.opacity = (iCur + iSpeed) / 100;

} else {

obj.style[attr] = iCur + iSpeed + 'px'

}

if(flag){

clearInterval(obj.timer);

if(fn){

fn();

}

}


}

}, 30)

}


function getStyle(obj, attr) {

if(obj.currentStyle) {

return obj.currentStyle[attr];

} else {

return getComputedStyle(obj, false)[attr];

}

}


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

举报

0/150
提交
取消

麻烦帮忙看下,我写出来的代码没有效果

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