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

style.marginLeft 报错Cannot read property 'style' of undefined

var marginLeft = parseInt(ball.style.marginLeft,10) 

这行报错,Cannot read property 'style' of undefined 

是不是style.marginLeft这个写法有问题呢?


正在回答

5 回答

要把_animate()里面的参数删了,因为你在这个函数外面以及有个ball了。

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

一仁 提问者

确实是的啊,非常感谢!
2016-07-26 回复 有任何疑惑可以回复我~
#2

慕粉1657331796

完美解决了问题!
2017-06-17 回复 有任何疑惑可以回复我~

如果你问的是promise改写之前的话,是因为你的body还没加载就加载了js, 所以提示undefined

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

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()
   })
}

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

一般通过非id和querySelect获得的dom元素都是一个数组,要加下标比如ball[0]来调用对象的属性

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

_boom

querySelector() 方法返回文档中匹配指定 CSS 选择器的一个元素。 注意: querySelector() 方法仅仅返回匹配指定选择器的第一个元素。如果你需要返回所有的元素,请使用 querySelectorAll() 方法替代。
2016-07-26 回复 有任何疑惑可以回复我~

你看一下你的ball是不是个数组

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

一仁 提问者

不是数组,我对比了下老师的代码,三个球的class都是ball,函数传入了ball,距离和回调函数,一样的,不知是何原因
2016-07-24 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

style.marginLeft 报错Cannot read property 'style' of undefined

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