You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何jQuery.html()可用而element.innerHTML失效?如何用原生JS替代?

原生JS替代jQuery的.html()方法(针对DOM元素场景)

你遇到的问题核心是:jQuery的.html()方法和原生innerHTML的处理逻辑不一样。

当你给jQuery的.html()传入DOM元素(比如你的qrCodeCanvas)时,它会直接把这个已存在的DOM元素移动/插入到目标元素里,同时清空目标元素原有内容;而innerHTML只能接收HTML字符串——你用qrCodeCanvas.outerHTML得到的是canvas的HTML代码字符串,用它设置innerHTML会创建一个全新的空canvas元素,自然看不到原来绘制的内容。

用原生JS实现和$(element).html(qrCodeCanvas)完全一致的效果,有两种简单方法:

方法1:清空后追加元素

// 先清空目标元素的所有子内容
element.innerHTML = '';
// 将已有的canvas元素添加进去
element.appendChild(qrCodeCanvas);

方法2:使用replaceChildren(现代浏览器推荐)

这是ES6+新增的API,一步完成清空+添加:

element.replaceChildren(qrCodeCanvas);

这两种方法都会保留你原来绘制好内容的canvas元素,和jQuery的效果完全一致。

内容的提问来源于stack exchange,提问作者mikemaccana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 16:55:22