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

按照老师的写法,style报错了

Uncaught TypeError: Cannot read property 'style' of undefined  什么情况啊

正在回答

4 回答

 function _animate(ball,distance,cb)写成 function _animate(),_animate()调用的时候也没有参数

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

我也是这个错误,不知道老师是怎么测试通过的,总感觉参数传导有问题

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

把方法里的参数去掉就好了.

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

<!doctype html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Promise animation</title>
    <style>
    .ball{
        width:40px;
        height:40px;
        border-radius: 20px;
        }
    .ball1{background: red;}
    .ball2{background: yellow;}
    .ball3{background: blue;}


    </style>
    <script src="./node_modules/bluebird/js/browser/bluebird.js"></script>
</head>
<body>
    <div class="ball ball1" style="margin-left:0;"></div>
    <div class="ball ball2" style="margin-left:0;"></div>
    <div class="ball ball3" style="margin-left:0;"></div>
    <script>
    var ball1 = document.querySelector('.ball1')
    var ball2 = document.querySelector('.ball2')
    var ball3 = document.querySelector('.ball3')

    function animate(ball,distance,cb){
        setTimeout(function(){
            var marginLeft = parseInt(ball.style.marginLeft,10);
            if(marginLeft==distance){
                cb && cb()
            }
            else{
                if(marginLeft<distance){
                    marginLeft++
                }
                else{
                    marginLeft--
                }
                ball.style.marginLeft=marginLeft +'px'
                animate(ball,distance,cb)
            }
        },13)
    }
    /*animate(ball1,100,function(){
        animate(ball2,200,function(){
            animate(ball3,300,function(){
                animate(ball3,150,function(){
                    animate(ball2,150,function(){
                        animate(ball1,150,function(){
                        })
                    })
                })
            })
        })
    })*/
    var Promise = window.Promise;
    function promiseAnimate(ball,distance){
        return new Promise(function(resolve,reject){

    function _animate(ball,distance,cb){
        setTimeout(function(){
            var marginLeft = parseInt(ball.style.marginLeft,10);
            if(marginLeft==distance){
                resolve();
            }
            else{
                if(marginLeft<distance){
                    marginLeft++
                }
                else{
                    marginLeft--
                }
                ball.style.marginLeft=marginLeft +'px'
                _animate()
            }
        },13)
    }
    _animate()
        })
    }

    promiseAnimate(ball1,100)
    .then(function(){
        return promiseAnimate(ball2,200)
    })
    .then(function(){
        return promiseAnimate(ball3,300)
    })
    .then(function(){
        return promiseAnimate(ball3,150)
    })
    .then(function(){
        return promiseAnimate(ball2,150)
    })
    .then(function(){
        return promiseAnimate(ball1,150)
    })
    </script>
</body>
</html>

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

举报

0/150
提交
取消
进击Node.js基础(二)
  • 参与学习       76755    人
  • 解答问题       226    个

本教程带你攻破 Nodejs,让 JavaScript流畅运行在服务器端

进入课程

按照老师的写法,style报错了

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