[英]Why is jQuery.html() working when .innerHTML() is failing?
我有一些生成<canvas>
元素的代码,我正在尝试将其从 jQuery 更新为现代香草 JS。
根据 inte.net 上的大多数文档,包括StackOverflow 上的这个问题,我试图使用element.innerHTML
来替换 jQuery 的html()
方法。
然而,这使用element.innerHTML
失败,而 jQuery html()
工作:
// Fails
// element.innerHTML = qrCodeCanvas.outerHTML;
// Works
$(element).html(qrCodeCanvas);
看到这个JSFiddle
如何用 vanilla JS 替换.html()
?
jQuery .html()
function 除了通过.innerHTML
更新 DOM 之外还涉及大量工作。 在这种情况下,您已经有了一个 DOM 元素( <canvas>
),所以.innerHTML
没有意义。 jQuery 代码检测到您传递了一个 DOM 元素(而不是作为字符串的 HTML 文本),因此它会为您将其附加到 DOM。
使用.outerHTML
会将您的<canvas>
变回字符串,但您不希望这样,因为其他代码已经绘制到 canvas 上; 获得 HTML 将失去它。
在这种情况下,相当于.innerHTML
的浏览器 API 将是.appendChild()
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.