Javascript 文档外的元素
我刚刚读了MDN的这篇文章,看到根据“document.getElementById”的规范,不在文档中的元素不被搜索Javascript 文档外的元素,javascript,jquery,html,css,web,Javascript,Jquery,Html,Css,Web,我刚刚读了MDN的这篇文章,看到根据“document.getElementById”的规范,不在文档中的元素不被搜索 我对元素为什么/如何可以在文档之外感到困惑。这与绝对定位元素(即从文档流中删除绝对定位元素)的定义有何不同。我不完全确定绝对定位元素的情况是否适用于此,但如果您能澄清“文档之外”的含义以及为什么会使用类似的内容,我将不胜感激。文档是一棵树,但您可以拥有不在树上的节点(叶子/分支)(要么是因为他们从来没有这样做过,要么是因为他们已经成功了) 举例可能会更清楚地说明这一点 示例1:
我对元素为什么/如何可以在文档之外感到困惑。这与绝对定位元素(即从文档流中删除绝对定位元素)的定义有何不同。我不完全确定绝对定位元素的情况是否适用于此,但如果您能澄清“文档之外”的含义以及为什么会使用类似的内容,我将不胜感激。文档是一棵树,但您可以拥有不在树上的节点(叶子/分支)(要么是因为他们从来没有这样做过,要么是因为他们已经成功了) 举例可能会更清楚地说明这一点 示例1:从不在树中: 这里有一个元素不在任何文档中:
var elm = document.createElement('div');
elm.id = "foo";
这是一个元素,具有id
,但它不是任何文档的一部分
示例2:从树中删除:
HTML:
|文档是一棵树,但您可以拥有不在树上的节点(叶子/树枝)(要么因为它们从未在树上,要么因为它们从树上脱落) 举例可能会更清楚地说明这一点 示例1:从不在树中: 这里有一个元素不在任何文档中:
var elm = document.createElement('div');
elm.id = "foo";
这是一个元素,具有id
,但它不是任何文档的一部分
示例2:从树中删除:
HTML:
|“不在文档中”表示“不存储在当前文档的DOM树中”,即节点存在于内存中,但它们不“附加”到页面上的任何节点
一个佐证是,元素因此必须是不可见的,但其原因与绝对位置完全不同。在绝对位置中,节点确实存在于DOM中,它们可能不在“屏幕上”的位置。“不在文档中”表示“不存储在当前文档的DOM树中”,即节点存在于内存中,但未“附加”到页面上的任何节点
一个佐证是,元素因此必须是不可见的,但原因与绝对位置完全不同。在绝对位置中,节点确实存在于DOM中,它们可能不在“屏幕上”的位置.您可能需要向松散元素添加
id
,因为问题特别是关于getElementById
。您可能需要向松散元素添加id
,因为问题特别是关于getElementById
。
// 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