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

为什么我这样写,会出现原型上没有定义的这个问题

http://img1.sycdn.imooc.com//5710bfcc00017d9508360657.jpg



按照老师的方法写的,为什么我这个会出现这样的问题;

var ball1 = document.querySelector('.ball1');
var ball1 = document.querySelector('.ball2');
var ball1 = document.querySelector('.ball3');
var Promise = window.Promise;
//
//
//    function animation(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;
//                  animation(ball, distance,cb);
//              }
//
//          }, 13);
//      };
//      animation();
//      
//      animation(ball1,200,function(){
//          animation(ball2,300,function(){
//              animation(ball3,400,function(){
//                  animation(ball3,250,function(){
//                      animation(ball2,250,function(){
//                          animation(ball1,250)
//                      })
//                  })
//              })
//          });
//      });
//      
        
        
        


function promiseAnimation(ball, distance) {
    return new Promise(function(resole, reject) {
        function animation(ball) {
            setTimeout(function() {
                var marginLeft = parseInt(ball.style.marginLeft,10);
                if (marginLeft === distance) {
                    resole();
                } else {
                    if (marginLeft > distance) {
                        marginLeft--;
                    } else {
                        marginLeft++;
                    }
                    ball.style.marginLeft = marginLeft;
                    animation();
                }

            }, 13);
        };
        animation();
    });
};

promiseAnimation(ball1, 100)
    .then(function() {
        return promiseAnimation(ball2, 200)
    })
    .then(function() {
        return promiseAnimation(ball3, 300)
    })
    .then(function() {
        return promiseAnimation(ball3, 150)
    })
    .then(function() {
        return promiseAnimation(ball2, 150)
    })
    .then(function() {
        return promiseAnimation(ball1, 150)
    })


正在回答

1 回答

Promise中的animation()函数在定义的时候加了ball这个参数。在调用的时候却没有传参,函数内的ball就是undefined。定义animation的时候去掉参数。让函数内animation的ball取promiseAnimation()中的参数ball。

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

蛋疼少年的和谐青春 提问者

按照您说的修改后,将我遇到的错误修复成功了,感谢。 可是后来出现了另外一个问题,运行node的时候 报错 var ball1 = document.querySelector('.ball1'); ^ ReferenceError: document is not defined 这个让我很困惑。如果您还有时间帮我解答一下这个是什么原因。万分感谢。
2016-04-17 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

为什么我这样写,会出现原型上没有定义的这个问题

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