gpt4 book ai didi

appendChild 方法的 Javascript 效率提升

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:27:39 24 4
gpt4 key购买 nike

我想修改以下 Java 脚本以使其更高效

for(var i = 0; i < 1000; i += 1){
var el = document.createElement('div');
el.appendChild(document.createTextNode('Node ' + (i + 1)));
document.getElementById('nodeHolder').appendChild(el);
}

理想情况下,如果可以提供其背后的原因,将不胜感激。

任何想法将不胜感激。

最佳答案

创建一个文档片段并附加到它,然后对整个集合进行一次附加。

var frag = document.createDocumentFragment();

for(var i = 0; i < 1000; i += 1){
var el = document.createElement('div');
el.appendChild(document.createTextNode('Node ' + (i + 1)));
frag.appendChild(el);
}

document.getElementById('nodeHolder').appendChild( frag );

现在您的 getElementById 只需要运行一次,DOM 只需要更新一次。

文档片段 是一个通用容器。将它附加到 DOM 时,容器就消失了,只附加了它的内容。


如果您愿意,可以稍微压缩一下代码:

示例: http://jsfiddle.net/7hagb/

var frag = document.createDocumentFragment();

for(var i = 0; i < 1000; i += 1){
frag.appendChild(document.createElement('div'))
.appendChild(document.createTextNode('Node ' + (i + 1)));
}

document.getElementById('nodeHolder').appendChild( frag );

此外,一个非常小的优化是去掉 i + 1,并修改 for 循环以提供您想要的值。

示例: http://jsfiddle.net/7hagb/1/

var frag = document.createDocumentFragment();

for(var i = 1; i <= 1000; i += 1){
frag.appendChild(document.createElement('div'))
.appendChild(document.createTextNode('Node ' + i));
}

document.getElementById('nodeHolder').appendChild( frag );

关于appendChild 方法的 Javascript 效率提升,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7072760/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com