IE中的getElementById问题?

时间:2012-04-15 11:29:47

标签: javascript getelementbyid

为什么以下代码在Firefox和Chrome中运行良好但在IE6和IE8中导致错误?

<!DOCTYPE html>
<html>  
<head></head>  
<body>
<div id="abc"></div>
<script type="text/javascript">
var doLoad = function() {
  // error in ie6 and ie8
  abc = document.getElementById("abc"); 
  abc.innerHTML = "hello world!"; 
  // correct in ie6 and ie8
  /*
  var abc = document.getElementById("abc"); 
  abc.innerHTML = "hello world!";
  */
  // correct in ie6 and ie8
  /* 
  xyz = document.getElementById("abc"); 
  xyz.innerHTML = "hello world!";
  */
}
window.onload = doLoad;
</script>  
</body>  
</html>

但如果我在var之前添加document.getElementById("abc");或将abc重命名为xyz,那么它在IE6和IE8中运行良好。

2 个答案:

答案 0 :(得分:4)

IE为每个带ID的元素创建一个全局JavaScript变量。这些变量不能被覆盖并导致各种各样的问题。

要记住的事项:不要创建与元素ID同名的全局变量。根本不要创建全局变量。

答案 1 :(得分:3)

当你错过var语句时,它会将变量赋值给window对象。 所以它与window.abc = document.getElementById('abc');

相同

但是window.abc正好是id为abc的div,而在IE中你不能为它赋值。