我尝试进行div
移动并且一旦到达容器边缘div
我就会使用此代码执行此操作,但调试器显示'这个错误Cannot read property 'offsetWidth' of undefined
var speed = 10,
direction = 1;
var ballElement = document.getElementsByClassName('ball'),
containerElement = document.getElementsByClassName('mainDiv');
if (ballElement) {
var boxLeftPos = ballElement.offsetLeft,
boxRightPos = boxLeftPos + ballElement.offsetWidth;
if (boxRightPos > document.containerElement.offsetWidth) {
direction = -1;
}
if (boxLeftPos < 0) {
direction = 1;
}
ballElement.style.left = (boxLeftPos + speed * direction) + 'px';
}
错误在这一行:
if (boxRightPos > document.containerElement.offsetWidth)
答案 0 :(得分:2)
getElementsByClassName
返回一个数组。如果您只有该类的一个元素,请添加[0]以检索它:getElementsByClassName('ball')[0]
从document.
if (boxRightPos > document.containerElement.offsetWidth) {
答案 1 :(得分:1)
document.containerElement
未定义它应该只是containerElement
的外观
答案 2 :(得分:1)
document.getElementsByClassName
的结果是nodeList
个对象。因此,它没有offsetWidth或样式。您可以改为使用document.querySelector('.ball')
,或使用containerElement[0]
。