我在javascript中创建多个行星对象来处理动画。
动画适用于每个星球,但我在IE 6/7中遇到错误,说“第15行第2行需要对象”
代码:
var earthObj = null;
var mercObj = null;
var jupiObj = null;
var animate;
function init()
{
mercObj = document.getElementById('mercury');
earthObj = document.getElementById('earth');
jupiObj = document.getElementById('jupiter');
mercObj.style.position= 'relative';
mercObj.style.left = '54px';
mercObj.style.visibility = 'hidden';
earthObj.style.position= 'relative'; //error on this line
earthObj.style.left = '80px';
earthObj.style.top = 300px';
}
答案 0 :(得分:1)
在尝试调用对象之前,请测试它是否存在。
earthObj = document.getElementById('earth');
if(!earthObj) {
alert("Could not find Earth");
return;
}
答案 1 :(得分:0)
我在Mac上,没有任何IE尝试。如果你改变这样的代码,你会得到同样的错误:
function init() {
var earthObj = null;
var mercObj = null;
var jupiObj = null;
var animate;
mercObj = document.getElementById('mercury');
earthObj = document.getElementById('earth');
jupiObj = document.getElementById('jupiter');
mercObj.style.position= 'relative';
mercObj.style.left = '54px';
mercObj.style.visibility = 'hidden';
!earhtObj && alert("There is no element with id 'earth'");
earthObj.style.left = '80px';
earthObj.style.top = '300px';
earthObj.style.position= 'relative';
}
我来了accros this帖子,并且想一想错误是否与IE6 / 7错误有关,当某个全局变量与dom对象同名时会触发该错误。
我还将earthObj.style.position= 'relative';
移到了块的末尾,并期望错误在earthObj.style.left = '80px';
答案 2 :(得分:0)
我发现在IE中,如果脚本位于已定义/生成的HTML元素之后,该函数将起作用。
即。将脚本放在HTML文档的末尾,而不是在开头,或者使用jquery的ready函数:
$(function() {
mercObj = document.getElementById('mercury');
});