如何在JavaScript中添加不间断空格而不使用innerHTML?

43

我正在动态生成内容,在某些情况下,我需要将 &nbsp; 设置为 <span> 元素的唯一内容。

但以下代码会将 &nbsp; 添加为文本而不是添加一个空格:

var foo = document.createElement("span")
foo = document.createTextNode("&nbsp;");

这很有道理,所以我想知道,如果不能使用 innerHTML,我应该如何正确添加 &nbsp;

谢谢帮助!


为什么你不想使用 innerHTML - David Hellsing
3
请尝试:document.createTextNode("\u00a0"); - benhowdle89
@David:因为我在寻找一种通过现有方法运行此代码的方式,而无需添加额外的语句来使用 innerHTML(以防需要添加空格)。 - frequent
3个回答

103
你可以使用Unicode字面值表示不间断空格
var foo = document.createTextNode("\u00A0");

5
将所有空格替换为它们的Unicode字面值:text = text.replace(/\s/g, '\u00A0'); - Combine
这太完美了。它还可以在JQuery的text()命令中使用:link.text("(隐藏\u00A0信息)"); - Grant Birchmeier

16
如果您不想使用 innerHTML,可以使用十六进制转义。
最常见的有:
  • \x20 – 标准空格或者\s
  • \xC2\xA0 – 不间断空格或者&nbsp;
  • \x0D – 回车或者\r
  • \x0A – 换行或者\n
  • \x09 – 制表符或者\t
在您的情况下:\xC2\xA0


4
将不间断空格添加到父节点中,以下简称“parent”:

parent.append("\u00A0");

来源:https://developer.mozilla.org/en-US/docs/Web/API/ParentNode/append


1
我看到您是新来的用户。除非您有一些现有答案没有涵盖的内容,否则不应回答问题。 - Bob
我认为使用.innerHTML添加简单的 是一个不好的选择,因为它非常缓慢,而且可能会增加安全风险;因此我的答案应该在这个背景下考虑。 - Sinan Gabel
所以,请在回答中阐明您的观点:)解释为什么innerHTML是一个糟糕的选择,添加参考资料,您可以创建代码片段并展示它的缓慢性。欢迎加入社区! - Bob

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接