我正在尝试使用JS插入空白文本节点,但它根本不起作用。 innerHtml
会忽略TextNode
属性吗?
查看我的JSFiddle
insertWhitespace = function() {
var contentEditable = document.getElementById("txt");
var element = document.getElementById("annyoing-html");
var textNodeLeft = document.createTextNode("");
var textNodeRight = document.createTextNode("");
textNodeLeft.innerHtml = "​";
textNodeRight.innerHtml = "​";
contentEditable.insertBefore(textNodeLeft, element);
if(element.nextSibling != null) {
contentEditable.insertBefore(textNodeRight, element.nextSibling);
} else {
element.appendChild(textNodeRight);
}
};
我实际上计划插入零空格字符,但无论如何它都不会像这样工作。
如何插入此类文本节点?
答案 0 :(得分:2)
HTML实体(&entity;
- 格式化的字符串)令人震惊,对于HTML来说。
对于JavaScript,您需要使用JavaScript转义序列。
在这种情况下,非中断空格,即\xA0
然而,将NBSP链接在一起以人为地创造空间是非常的错误做法。你应该使用边距,填充,定位...任何东西,只要它是CSS。间距是演示文稿的一部分,演示文稿是CSS的工作。
为了完整性,您可以使用普通空格(" "
),前提是您将容器的CSS设置为包含white-space: pre-wrap
以使空白显着。
答案 1 :(得分:1)
如前所述,
是 HTML 实体。您正在尝试填充文本节点,而不是HTML。
因此,填补"非破坏空白" (
)进入文本节点,可以使用其unicode字符代码:
var textNode = document.createTextNode("\xA0");
// or
var textNode2 = document.createTextNode("");
textNode2.data = "\xA0"; // or
textNode2.textContent = "\xA0";
答案 2 :(得分:1)
文本节点没有.innerHTML
属性(nb:注意大小写)
最简单的解决方案是在创建元素时简单地将正确的内容指定为Unicode文字:
var textNodeLeft = document.createTextNode("\u200b");
var textNodeRight = document.createTextNode("\u200b");
答案 3 :(得分:0)
是的,文本节点没有.innerHTML
属性。只有HTMLElements这样做。
所以,这将有效:
var textNodeLeft = document.createElement("span");
textNodeLeft.innerHTML = " ";