Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在一组div上设置内容的最有效/最快速的方法_Javascript_Html_Css - Fatal编程技术网

Javascript 在一组div上设置内容的最有效/最快速的方法

Javascript 在一组div上设置内容的最有效/最快速的方法,javascript,html,css,Javascript,Html,Css,我目前正在使用以下工具更新许多div的内容: for(变量i=0;i

我目前正在使用以下工具更新许多div的内容:

for(变量i=0;i<400;i++)
{
document.getElementById('box'+i).innerHTML='a';//每个元素可以有不同的值,a是任意的
}
(400是任意的,可能更多)


我想知道,就浏览器回流而言,它会对每个innerHTML集进行回流吗?如果是的话,出于性能原因,也许有一种方法可以让我一次只用一次回流(甚至不回流)来更新所有div,或者使用比innerHTML更快的方法。

如果使用jquery,您可以执行以下操作:

$('.box').html('whatever');

如果使用jquery,可以执行以下操作:

$('.box').html('whatever');

如果可以替换400个调用
elem.innerHTML=通过单个调用

container.innerHTML=cummulativeHtml它会更快-只有一个DOM变异事务而不是400个。

如果您可以替换400个调用
elem.innerHTML=通过单个调用


container.innerHTML=cummulativeHtml它会更快-只有一个DOM变异事务而不是400个。

您可以分离容器,在一个循环中设置所有InnerHTML,然后只重新连接一个大回流,而不是400个小回流。哪一个更好取决于很多事情。碎片也很好。预先调整内容子容器的大小也很有帮助。@Dandavi很有趣,请展示example@foreyez我今天发布的以某种方式运行的代码可能在6周内运行不同…这种性能优化通常在不同主机(甚至是主机版本)上有非常不同的结果,因此,开发一系列测试并进行广泛的测试。您可以分离容器,在一个循环中设置所有InnerHTML,然后只重新连接一个主要回流,而不是400个小回流。哪一个更好取决于很多事情。碎片也很好。预先调整内容子容器的大小也很有帮助。@Dandavi很有趣,请展示example@foreyez我今天发布的以某种方式运行的代码可能在6周内运行不同…这种性能优化通常在不同主机(甚至是主机版本)上有非常不同的结果,因此,开发一系列测试并进行广泛测试。检查如何生成
cumulativeHTML
-我很确定问题存在。我最近注意到,至少在chrome中,如果新内容与旧内容匹配,调用
.innerHTML=
非常便宜。。。几乎就像一个
shouldComponentUpdate()
-like例程现在内置到DOM中了…@dandavis,没错。但我的内容几乎总是与旧的不匹配。我也在做容器的动画,所以我需要尽可能快。这是一个非常复杂和不断变化的过程。在这样的循环中同步DOM更新肯定会在内部捆绑成一个整体。。。您还应该将循环放在requestAnimationFrame回调中,以向浏览器提供更多关于意图的提示。“…它会更快…”不一定,这在很大程度上取决于所涉及的更改以及布局和渲染引擎的工作方式。检查您如何生成
cumulativehtml
-我非常确定问题存在。我最近注意到,至少在chrome中,如果新内容与旧内容匹配,调用
.innerHTML=
非常便宜。。。几乎就像一个
shouldComponentUpdate()
-like例程现在内置到DOM中了…@dandavis,没错。但我的内容几乎总是与旧的不匹配。我也在做容器的动画,所以我需要尽可能快。这是一个非常复杂和不断变化的过程。在这样的循环中同步DOM更新肯定会在内部捆绑成一个整体。。。您还应该将循环放在requestAnimationFrame回调中,以向浏览器提供更多关于意图的提示。“…它会更快…”不一定,这在很大程度上取决于所涉及的更改以及布局和渲染引擎的工作方式。您的答案应该解释它是如何更快的。您的答案应该解释它是如何更快的。