IE中的Javascript对象需要错误

时间:2012-05-13 23:48:29

标签: javascript object animation

我在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';
}

3 个答案:

答案 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');
});