document.createDocumentFragment()似乎在被追加后被清空?

时间:2012-06-06 13:00:05

标签: javascript dom

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

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个。

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

1 个答案:

答案 0 :(得分:1)

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

var bufferCopy = buffer.cloneNode(true);
document.getElementById('container').appendChild(bufferCopy);