我通过这种方式访问我的 DOM 对象:
HTML
<div id="mydiv"></div>
JavaScript
alert(mydiv.style.visibility);
它可以在任何地方工作,流畅。 现在我遇到了一种情况,根据某些参数,我从窗口中删除一些元素(1 或 2):
JavaScript
if (condition) mydiv.parentNode.removeChild(mydiv);
稍后,仍然在 JavaScript 代码中,仅当该元素存在时,我才执行与该元素相关的部分:
JavaScript
if (mydiv) mydiv.style.whatever = "1";
这在 IE8 下不起作用,它返回“对象不支持此属性或方法”
我也尝试检查 undefined
,但没有成功 [崩溃的部分是 if (mydiv)
部分!]
对此最好的解决方案是什么?我不想到处替换我的代码并检查 document.getElementById("mydiv") == null
...
最佳答案
首先,依赖基于 ID 的全局创建变量是一种极其糟糕的做法,因为这不是标准。
但是,您始终可以自己创建全局变量:
var mydiv = document.getElementById('mydiv');
现在,从 DOM 中删除元素并不意味着该对象将被无效。 mydiv
变量仍然引用 DOM 对象,它不再是 DOM 的一部分。
您可以执行以下操作:
if (condition) {
mydiv.parentNode.removeChild(mydiv);
mydiv = null;
}
现在,mydiv
将引用 null
值,并且由于 null
是一个 false 值,因此在执行 时它会起作用。 if (mydiv)
关于javascript - 一个简单的语法奇迹 : access html object by their global name under IE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17997483/