为什么DocumentFragment在追加后被清除
Why is DocumentFragment cleared after appending
第一个日志返回完整的li
元素,而第二个日志返回空的DocumentFragment
。为什么?我在任何文档中都找不到关于这种行为的任何信息。
var main = document.getElementById('main');
var fooTemplate = document.getElementById('my-template');
var foo = fooTemplate.content.cloneNode(true);
console.log(foo);
main.appendChild(foo);
console.log(foo);
<template id="my-template">
<li>foo</li>
</template>
<ul id="main">
</ul>
来自DocumentFragment
上的MDN文档
各种其他方法可以将文档片段作为自变量(例如,任何
Node
接口方法,如Node.appendChild
和Node.insertBefore
),在这种情况下,附加或插入片段的子级,而不是片段本身。
CCD_ 7将文档片段复制到CCD_。
main.appendChild(foo)
将foo
文档片段的内容移动到main
中。foo
仍然是一个文档片段,所有节点都已移动,因此它是空的。
如果您想在添加DOM节点后保留对它们的引用,您需要存储childNodes
,但如果您只引用nodeList
,它将是空的,因此您需要将其转换为Array
:
var nodes = Array.prototype.slice.call(foo.childNodes);
console.log(nodes);
main.appendChild(foo);
console.log(nodes);
相关文章:
- 表追加而不附加最后一个元素
- document.open/document.write没有正确地清除chrome中的文档——这是chrome的错误吗
- 单击jquery清除输入值
- 如何在Microsoft VirtualEarth 6.3中使用纯javascript清除整个形状层
- 清除以前的$_GET值或不获取仅隐藏字段的值
- 如何在jquery中停止在更改时追加值
- JQuery.on(“keydown”)追加到页面时不工作
- Javascript清除缓存以清除基本身份验证凭据
- 清除启动日期选取器值
- jQuery[button.class]未检测到用按钮追加行
- 在 SlickGrid 中编辑后,根据不同列中的另一个单元格清除单元格
- php页面,该页面在清除值后接受输入
- 清除数据并将旧值附加到文本框中
- 使用javascript清除Asp.NET FreeTextBox(RTF文本框)
- 如何使Visual Studio自动清除Javascript控制台
- 使用javascript或html本身清除文本字段
- 清除函数中if语句内部不起作用的间隔
- 使用jQuery'生成输入字段;s追加
- 为什么DocumentFragment在追加后被清除
- 在追加时清除所有输入文本框值