老师,为什么无法实现链式运动?

老师,为什么无法实现链式运动?

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8" />
    <title>多物体运动</title>
    <style type="text/css">
        *{margin: 0;padding: 0;}
        li{list-style:none;width: 200px;height: 100px;background: black;margin-bottom: 20px;border: 1px solid #f00;
            filter: alpha(opacity:30);opacity: 0.3;}
    </style>
    <script type="text/javascript">
        window.onload=function(){
            var li=document.getElementsByTagName('li');
            for(var i=0;i<li.length;i++){
                li[i].timer=null;
                li[i].onmouseover=function(){
                    startMove(this,{width:400,height:200},function(){
                        startMove(this,{opacity:100});
                    });
                }
                li[i].onmouseout=function(){
                    startMove(this,{width:200,height:100,opacity:30});
                }
            }
            function getStyle (obj,attr){ return obj.currentStyle?obj.currentStyle[attr] : getComputedStyle( obj )[attr]; }

            function startMove(obj,json,fn){
                
                clearInterval(obj.timer);
                obj.timer=setInterval(function(){
                    var iFlag=true;//假设所有运动都到达目标
                    for(var attr in json){

                    //1.取当前值
                    var icur=0;
                    attr=='opacity'? icur=Math.round(parseFloat(getStyle(obj,attr))*100) : icur=parseInt(getStyle(obj,attr));
                    //2.计算速度
                    var speed=(json[attr]-icur)/10;
                    speed=speed>0?Math.ceil(speed):Math.floor(speed);
                    //3.检测停止
                    if(icur!=json[attr]){
                        iFlag=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(iFlag){
                        clearInterval(obj.timer);
                        fn && fn();
                    }
                },30)

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

而且还报错了?不加链式运动的时候一切正常啊

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
好帮手慕糖 2017-09-05 18:11:20

你好,可参考下图操作下,免费课http://www.imooc.com/learn/759中有些讲解。本路径的高级路径“js的进阶课程”中有详细的讲解哟,可以关注下,

http://img1.sycdn.imooc.com/climg//59ae77680001bd5011080596.jpg

祝学习愉快~

好帮手慕糖 2017-09-05 13:40:27

你好,把样式改为如下,看是你想要的效果么

filter: alpha(opacity:1);opacity: 1;

祝学习愉快~

  • 提问者 慕丝0963956 #1
    不是,我解决了,但是想问下,如何通过打断点的方式找bug?
    2017-09-05 14:24:28
好帮手慕糖 2017-09-04 19:23:35

你好,你要达到什么样的效果呢?这里是可以运动的,建议:详细的描述下你的问题;

祝学习愉快~

  • 提问者 慕丝0963956 #1
    我指的是链式运动无法实现,就是宽高变化后透明度无法改变,找不到问题在哪
    2017-09-04 19:42:53
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
前端小白入门系列课程
  • 参与学习           人
  • 提交作业       11218    份
  • 解答问题       36713    个

从一个不会编程的小白到一个老司机是需要过程的,首先得入门,学习基础知识,然后才能进阶,最后再到精通,本专题是你走进前端世界的不二选择!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师