如果使用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个。
有没有办法在某处保留子节点而不重置它们,以便缓存缓冲区而不必每次都附加子节点?
答案 0 :(得分:1)
您刚刚描述了DocumentFragment
的性质。如果要重用相同的内容,可以在每次将其附加到文档之前克隆该片段:
var bufferCopy = buffer.cloneNode(true);
document.getElementById('container').appendChild(bufferCopy);