保留对附加节点javascript的引用

Ran*_*all 10 javascript appendchild documentfragment

请不要图书馆.超出我的控制.

我正在向dom附加一个文档片段.这一切都有效.没问题.

在附加片段后如何保留/检索节点列表?相关代码:

var frag = document.createDocumentFragment();
//add some content to the fragment
element.appendChild(frag);
Run Code Online (Sandbox Code Playgroud)

再次,这是有效的!我不需要对如何添加东西到dom进行故障排除!

如果我设置var e = element.appendChild(frag);,所有内容都会正常附加,但e= =一个空文档片段.

我在这里寻找一些光滑的魔法伏都教.不要让我循环整个dom.内容可以是任何东西,一个或多个有或没有孩子的节点.如果有一些querySelectorAll的技巧或可以接受的东西.

谢谢!

编辑 在进一步调用时,看起来e上面实际上是对fragvar 的返回引用,在将其附加到dom之后为空.这就像元素整齐地滑出片段进入dom一样,片段就是空洞的.

Ja͢*_*͢ck 17

这正是你所描述的; 当元素附加到元素时,它们将从片段中删除,以防止延迟引用导致内存泄漏.

获取这些子节点的一种方法是childNodes在执行appendChild()以下操作之前制作片段的浅表副本:

// make shallow copy, use Array.prototype to get .slice() goodness
var children = [].slice.call(frag.childNodes, 0);

element.appendChild(frag);

return children;
Run Code Online (Sandbox Code Playgroud)


Ser*_*abe 5

如果您只是在添加它之后查看,这lastChild就是要走的路。像这样使用它:

var e = element.lastChild;
Run Code Online (Sandbox Code Playgroud)

SitePoint 中的更多信息

  • 在大多数情况下,“element.lastElementChild”会更合适。只是为了确保您获得实际的节点。 (2认同)