我刚刚通过MDN阅读此article并看到,根据" document.getElementById"的规范,不会搜索文件中的元素
我对元素在文档之外的原因/方式感到困惑。这与绝对定位元素的定义有何不同(即,从文档流中删除绝对定位的元素)。我并不完全确定绝对定位的元素案例适用于此,而是澄清它在文档之外的含义""以及为什么会使用这样的东西将非常感激。
答案 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
答案 1 :(得分:1)
“不在文档中”表示“未存储在当前文档的DOM树中”,即节点存在于内存中,但它们不是“附加“到页面上的任何节点。
corrollary 是因为元素必须是不可见的,但这与绝对位置的原因完全不同。在后者中,节点确实存在于DOM中,它们可能不在“屏幕上”位置。