javascript-在每次迭代中将一个元素添加到DOM,而不是在循环结束时全部添加

我不是一个纯粹的前端开发人员,我想知道为什么在每次将元素添加到DOM的循环中,生成的DOM仅在循环结束时可见,而不能逐步显示.

<html>
<body>
    <div id="body"></div>
</body>
<script>
    for(var i = 0; i < 1000000; i++){
        document.getElementById('body').appendChild(document.createElement('br'));
        document.getElementById('body').appendChild(document.createTextNode(i));
    }
</script>
</html>

解决方法:

Javascript运行代码以完成重绘事件之前的处理.因此,为了定期更新显示,您需要定期终止脚本执行,并将某些内容放入事件队列中,以回调您的函数以进一步进行处理.

例如,您可以使用setTimeout执行此操作:

(function loop(i) {
    if (i > 10000) return; // end condition
    document.body.appendChild(document.createElement('br'));
    document.body.appendChild(document.createTextNode(i));
    void document.body.offsetWidth;
    setTimeout(loop.bind(null, i+1), 0);
})(0);
上一篇:KEGG and Gene Ontology Mapping in Bioinformatic Method


下一篇:当我把电脑500G硬盘格式化了的时候,在想些什么