javascript - 一个简单的语法奇迹 : access html object by their global name under IE?

标签 javascript dom internet-explorer-8

我通过这种方式访问​​我的 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/

相关文章:

javascript - 将页面下载为 pdf 文件

javascript - 使用 JSX 在 ReactJs 中创建类

javascript - 按钮元素内的 div 元素上的 jQuery悬停() 事件

internet-explorer-8 - dximagetransform.matrix,在 IE 8 标准模式下绝对定位不旋转的子元素

javascript - IE8 jQ 设置 CSS 属性(宽度或边距)被忽略

javascript:functionName() 和 functionName 有什么区别?

javascript - Ember.js 从动态路由过滤数据

javascript - 使用 JavaScript 删除 head 标签内的 noscript 标签

javascript - JS - 从 DOM 访问 <table>(错误 : "TypeError: tablex[0] is undefined")

jquery - Internet Explorer 和 ajaxStart/ajaxStop