javascript - 添加元素作为字符串与 createElement()

标签 javascript performance innerhtml createelement

对于我想要完成的事情,我可以使用 createElement()innerHTML 和一个字符串。

到底哪个才是真正的更快?很长一段时间以来,我一直相信字符串比返回相同结果的内置函数慢得多,但这是真的吗?

我问是因为我已经尝试过 createElement() 并且似乎所有必须添加到每个元素的属性都会减慢速度。不仅如此,它还占用了更多空间。我有一个循环,它根据数组的长度从 1 到无穷大,但最好在显示减速迹象之前添加多达 50 个左右的元素。在我希望创建的这 50 个左右的元素中,还有大约 10 个元素。因此,它实际上总共创建了大约 500 个元素。

我注意到使用内置函数创建元素的速度比平常快了一点,而且由于我在重置该数组时犯了傻(该数组是 5D 且未在同一脚本中设置),我想在重新开始之前,了解哪个真正更好,无论是速度还是更好的做法。

最佳答案

这个问题的性能差异因浏览器而异,并且(有时)在任何一种浏览器的不同版本之间,我看到了几篇不同的文章就这个问题给出了不同的建议。

根据我自己的经验,我只记得有一次我真的需要对一个大网页进行大量更改,特别是重建一个包含数百或可能数千行的表格元素,每行都有很多单元格,并且 < strong>我发现构建一个字符串变量然后在最后设置一次 innerHTML 比尝试通过 DOM 函数来完成要快得多,但是,这是针对特定的 Intranet Web 应用程序的,它保证 100% 的用户都在 IE 上,所以我不需要担心跨浏览器测试。

即使您决定走字符串构建路线,对于如何加快速度也有不同的看法。我读过不止一篇文章,比较了连续添加到字符串末尾(标准 myString += 'something' + 'something else' 类型操作)与附加到字符串末尾的性能一个数组变量,然后使用 Array.join() 在最后创建一个大字符串。同样,这对某些浏览器的某些版本产生了很大的影响,但在其他浏览器中没有什么不同或更糟。

关于javascript - 添加元素作为字符串与 createElement(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5878281/

相关文章:

java - 您在生产 Java 应用程序中使用 JMX 监控什么?

javascript - 用最少的代码更改多个元素的innerHTML

javascript - 在 InnerHTML 之后保留 CSS

javascript - 到另一个组件的门户

javascript - 在 Mocha 测试中没有调用函数

c++ - 调用常量复杂度 O(1) 5 行函数会显着影响性能,为什么?

php - 将临时结果存储在单独的数据库表中

Javascript计算器简单清晰的功能不起作用

javascript - 如何向 Leaflet 地理编码查询添加外部值?

javascript - "Stop"css transition 中点击