IE中的document.getElementById

时间:2011-04-06 19:49:06

标签: javascript internet-explorer

当我在Internet Explorer中使用document.getElementById时,出现此错误:

Mensaje: El objeto no acepta esta propiedad o método

翻译:

Object does not support this property or method

并且执行停止

HTML:

  <div id="contenedor">
  ...
  </div>

JavaScript的:

  contenedor = document.getElementById("contenedor");

这适用于Firefox和Chrome。

3 个答案:

答案 0 :(得分:3)

IE的某些(?)版本中存在错误,它为文档中的每个id值定义了全局常量。因此,当您编写contenedor = document.getElementById("contenedor")时 - 注意它使用变量的div名称 - 它会看到您正在尝试设置该全局变量并抱怨您不能。您应该做的是声明一个新变量而不是设置全局:var contenedor = document.getElementById("contenedor")

答案 1 :(得分:0)

如果它只是document.getElementById('someid')给你这条消息,可能是你的脚本放在HMTL的底部(在结束&lt; / body&gt;标签之前)将有所帮助。

如果要在将元素分配给变量之前加载元素,请使用

window.onload = function(){
 contenedor = document.getElementById("contenedor");
};

答案 2 :(得分:0)

看起来你的javascript在DOM准备好之前正在执行。许多javascript库包含一个在DOM准备就绪时添加事件的机制,否则,可以使用正文onload事件。

您可以尝试将javascript放在文档的底部,但这并不能保证在页面加载到足以允许浏览器构建DOM树之前不会执行代码。使用带有readydomready事件的框架(如mootools或jquery)或使用正如上所述的正文onload事件,你会好得多。

示例:

<html>
<head>
<script type="text/javascript">
  var initPage = function() {
    // do stuff
  }
</script>
</head>
<body onload="initPage();">
 <!-- page content -->
</body>
</html>