IE中的getElementById问题
getElementById issue in IE?
为什么以下代码在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");
之前添加var
或abc
重命名为xyz
,它将在IE6和IE8中运行良好。
IE为每个元素创建一个带有ID的全局JavaScript变量。这些变量不能被覆盖并导致各种问题。
要记住的是:不要创建与元素 ID 同名的全局变量。根本不创建全局变量。
当你错过 var 语句时,它会将变量断言为窗口对象。所以它和window.abc = document.getElementById('abc');
一样
但是 window.abc 正是 id 为 abc 的div,在 IE 中您无法为其赋值。
相关文章:
- 在指令控制器中使用$attrs时出现问题
- 将PHP变量传递给jQuery时遇到问题
- Canvas Html5绘图应用程序,移动画布会导致重大问题
- 参数变量出现ngTable指令问题
- 剑道网格jQuery动画()问题
- 我的jQuery插件参数没有正确启动,遇到了问题
- Phonegap-(安卓/iphone)多个图像的图像库出现问题
- TableExport jquery插件:文件名和扩展名问题
- JavaScript Pub/Sub属性访问问题
- JavaScript异步问题
- 如何解决Yii中的页面刷新问题
- Safari(Mac OS)上的jQuery平滑滚动问题
- jqGrid树网格问题
- 使用正则表达式评估电子邮件地址时出现性能问题
- 如何消除代码中的未定义和其他问题
- JavaScript代码问题:我正在将对象转换为数组
- 三星智能电视应用程序;Brightcove示例应用程序远程控制问题
- 由于iframe导致的问题
- ReactJS和SpringDataRest缓存问题可能与websocket有关
- Backbone LayoutManager渲染问题