JavaScript:输出符号和特殊字符

标签 javascript text unicode symbols appendchild

我正在尝试使用 JavaScript 将一些符号包含到 div 中。
它应该看起来像这样:

x ∈ ℝ

,但我得到的只是:x ∈ ℝ.

var div=document.getElementById("text");
var textnode = document.createTextNode("x ∈ ℝ");					
div.appendChild(textnode); 
<div id="text"></div>

我已经尝试过 document.getElementById("something").innerHTML="x ∈ ℝ" 并且成功了,所以我不知道为什么 createTextNode 方法没有成功。

我应该怎么做才能输出正确的东西?

最佳答案

您在需要成为文本的内容中包含了 HTML 转义符(“实体”)。根据 createTextNode 的文档:

data is a string containing the data to be put in the text node

就是这样。这是要放入文本节点的数据。 DOM spec同样清楚:

Creates a Text node given the specified string.

您想在此字符串中包含 Unicode。要在 JavaScript 字符串中包含 Unicode,请使用 Unicode escapes , 格式为 \uXXXX .

var textnode = document.createTextNode("x \u2208 \u211D");

或者,您可以简单地包含实际的 Unicode 字符并避免所有麻烦:

var textnode = document.createTextNode("x ∈ ℝ");

在这种情况下,只需确保 JS 文件以 UTF-8 格式提供,您将文件保存为 UTF-8 等。

设置.innerHTML的原因与 HTML 实体一起工作的是它将内容设置为 HTML,这意味着它在所有方面将其解释为 HTML,包括标记、特殊实体等。如果您考虑以下之间的区别,可能更容易理解这一点:

document.createTextNode("<div>foo</div>");
document.createElement("div").textContent = "<div>foo</div";
document.createElement("div").innerHTML = "<div>foo</div>";

第一个创建一个带有文字字符的文本节点"<div>foo</div>" .第二个将新元素的内容直接设置为 "<div>foo</div>" .另一方面,第三个创建一个实际的 div包含文本 "foo" 的新元素内的元素.

关于JavaScript:输出符号和特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39291156/

相关文章:

ios - ios返回键只有一个文本字段被关闭

java - Android、Foursquare 和 &#8212;特点

javascript - 当应用程序在集群模式下运行时,有没有办法调试 pm2 中的工作进程

javascript - path.getTotalLength 适用于文本 svg 吗?

javascript - 更改图标以在angularjs中展开折叠

python - 如何提取关键字和日期前后的文本

postgresql - Postgres 中的 Unicode 规范化

c - 是否建议使用 strcmp 或 _tcscmp 比较 Unicode 版本中的字符串?

javascript - Dragend 客户端在 Safari 和 Firefox 上的协调不连贯

javascript - .length 计算字符数,而不是数组长度