IE中的getElementById问题

getElementById issue in IE?

本文关键字:问题 getElementById 中的 IE      更新时间:2023-09-26

为什么以下代码在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>

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

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

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

当你错过 var 语句时,它会将变量断言为窗口对象。所以它和window.abc = document.getElementById('abc');一样

但是 window.abc 正是 id 为 abc 的div,在 IE 中您无法为其赋值。