2

如果您使用创建 DocumentFragment document.createDocumentFragment(),将子级附加到它,然后将缓冲区附加到某些东西,则缓冲区的所有子级似乎都消失了。例子:

var buffer = document.createDocumentFragment() ;

for (var i = 1; i <= 10; i++)
{
    var div = document.createElement('div');
    div.innerHTML = i;
    buffer.appendChild(div);
}

console.log( 'buffer: ' , buffer );

document.getElementById('container').appendChild(buffer);

console.log( 'buffer now: ' , buffer );

这里,在第一个 console.log 中,缓冲区的 childNodes 有 10 个孩子,在第二个中,childNodes 有 0 个。

有没有办法将子节点保留在某处而不让它们重置,以便缓存缓冲区并且不必每次都将子节点附加到它?

4

1 回答 1

1

您刚刚描述了 a 的性质DocumentFragment。如果要重用相同的内容,可以在每次将其附加到文档之前克隆片段:

var bufferCopy = buffer.cloneNode(true);
document.getElementById('container').appendChild(bufferCopy);
于 2012-06-06T13:22:02.550 回答