JavaScript 操作 DOM:避免使用 innerHTML 拼接字符串

作者:寒星

时间:2026-10-23

浏览:112

在 JavaScript 开发中,通过 innerHTML 拼接字符串来添加 HTML 元素虽然便捷,但会导致显著的性能损耗。本文对比了直接使用 innerHTML 赋值与使用 document.createElement 创建节点并追加的方法,指出字符串转换为 DOM 控件的过程会引发性能瓶颈,推荐使用后者以提升页面响应速度。

文章目录

避免使用 innerHTML 拼接字符串

在排查 Web 应用性能问题时,开发者通常会先检查冗余循环并精简控件数量。若优化后性能仍无改善,需进一步深入排查。有时一个看似微小的修改能显著提升效率,例如将直接操作 innerHTML 的方式调整为标准的 DOM 节点创建方式。


修改前:

修改前的代码示例

以下是修改前的代码示例:

 
objDiv.innerHTML += '<img id="picture" src="back.gif">';

修改后:

修改后的代码示例

以下是修改后的代码示例:

 
var imga = document.createElement("img");
imga.setAttribute("src","back.gif");
imga.setAttribute("id","picture");
objDiv.appendChild(imga);

性能差异分析

为了书写便利,开发者常倾向于直接使用 innerHTML 赋值字符串,而非先创建页面元素、分别赋值属性最后再嵌套追加。虽然前者简单便捷,但性能较差。这是因为浏览器必须将字符串解析并转换为正确的页面控件(DOM 节点),这一转换过程涉及较大的性能开销,从而导致页面响应迟缓。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章