innerHTML设置为包含HTML的字符串的问题

在javascript高级程序设计中关于innerHTML讲到:
为innerHTML设置包含HTML的字符串与解析后的innerHTML的值不相同。

div.innerHTML = "Hello & welcome, <b>\"reader\"!</b>"

以上操作得到结果如下:

<div id="content">Hello &amp; welcome, <b>&quot;reader&quot;!</b></div>

我试了一下并没有出现以上结果,div显示的内容并没有序列化,

clipboard.png

请问是我理解错了还是怎么回事?

阅读 7k
3 个回答

浏览器自动转义了,你把div换成pre标签试试。
去看了原文,发现题主理解错了,文中的意思是这样的:
输入:

div.innerHTML = 'Hello & welcome, <b>\"reader\"!</b>';

与以下输入等价:

div.innerHTML = 'Hello &amp; welcome, <b>&quot;reader&quot;!</b>';

输出的都是序列化的结果:

Hello & welcome, "reader"!

这个只是实体在浏览器的呈现效果。
你需要使用 innerHTML 才能看到 div 里真正的文本子节点(HTML文本),可以在浏览器 console 中看到你想要的结果。

document.getElementById('content').innerHTML

扩展可以了解下下面的 NODE 属性

document.getElementById('content').textContent
document.getElementById('content').innerText

修改

the result of this operation is as follows

应该就是
@TabWeng 说的以下输入等价的意思,翻译的问题。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题