为什么总是没什么反应?

来源:4-3 任意属性值(一)

wanoneQ

2016-02-19 20:15

<!DOCTYPE html>
<html>
<head>
    <title>20160218</title>
    <style type="text/css">
    *{padding: 0;margin:0;}

    ul li{
        width:300px;
        height: 100px;
        background-color: red;
        margin-bottom:20px; 
        border:5px solid green;
    }

    </style>


    <script type="text/javascript">
    window.onload=function(){
        var opp=document.getElementsByTagName("li");
        for (var i=0;i<opp.length;i++){
            opp[i].timer=null;//为什么var opp[i].timer;不行?
            opp[i].onmouseover=function(){
                startMove(this,500);
            }
            opp[i].onmouseout=function(){
                startMove(this,300);
            }
        }
    }
    
   
     function startMove(obj,iTarget){
                clearInterval(obj.timer);
                obj.timer=setInterval(function(){
                    var icur = parseInt(getStyle(obj,"width"));
                    var speed=(iTarget-icur)/8;
                    speed = speed>0?Math.ceil(speed):Math.floor(speed);
                    if(icur==iTarget){
                        clearInterval(obj.timer);
                    }
                    else{
                        obj.style[attr]=icur+speed+'px';
                    }
                },30)
            }
    
    function getStyle(obj,attr){
        if (obj.currentStyle){
           return obj.currentStyle[attr];
        }else{
           return getComputedStyle(obj,false)[attr];
        }
    }

    </script>
</head>
<body>
<ul>
    <li></li>
    <li></li>
    <li></li>
</ul>
</body>
</html>


写回答 关注

1回答

  • Betsey
    2016-02-20 09:49:35
    已采纳

    第44行的attr没有定义,应该把attr换成'width',因为attr是在getStyle()里面的局部变量,离开了getStyle()就会销毁

    Betsey 回复wanone...

    你以后可以在chrome里面打开开发者工具查看,就能知道什么地方有问题了

    2016-02-20 15:40:33

    共 2 条回复 >

JS动画效果

通过本课程JS动画的学习,从简单动画开始,逐步深入各种动画框架封装

113925 学习 · 1443 问题

查看课程

相似问题