文件外的元素

时间:2014-02-14 07:58:13

标签: javascript jquery html css web

我刚刚通过MDN阅读此article并看到,根据" document.getElementById"的规范,不会搜索文件中的元素

我对元素在文档之外的原因/方式感到困惑。这与绝对定位元素的定义有何不同(即,从文档流中删除绝对定位的元素)。我并不完全确定绝对定位的元素案例适用于此,而是澄清它在文档之外的含义""以及为什么会使用这样的东西将非常感激。

2 个答案:

答案 0 :(得分:3)

文档是一棵树,但是你可以拥有不在树上的节点(树叶/树枝)(因为它们从来没有,或者因为它们已经脱落了)。

示例可能会更清楚。

示例1:从不在树中:

这是一个不在任何文档中的元素:

var elm = document.createElement('div');
elm.id = "foo";

这是一个带有id的元素,但它不是任何文档的一部分。

示例2:从树中删除:

HTML:

<body>
<div id="foo"></div>
</body>

JavaScript的:

// The div is in the document, so this works:
var elm = document.getElementById("foo");

// Now we remove it:
elm.parentNode.removeChild(elm);

// 'elm' is no longer in any document
console.log(document.getElementById("foo")); // null

Example 2 Live | Source

答案 1 :(得分:1)

“不在文档中”表示“未存储在当前文档的DOM树中”,即节点存在于内存中,但它们不是“附加“到页面上的任何节点。

corrollary 是因为元素必须是不可见的,但这与绝对位置的原因完全不同。在后者中,节点确实存在于DOM中,它们可能不在“屏幕上”位置。