javascript 在文本之间插入节点

xriantvc  于 2023-04-19  发布在  Java
关注(0)|答案(3)|浏览(130)

我熟悉在给定引用节点之后或之前插入文本节点。但是,我想知道如何在给定节点中的文本之间插入标记。例如,

Before insertion: <p>Lorem dolor</p>
After insertion: <p>Lorem <span>ipsum</span> dolor</p>

span节点必须插入在另一个节点内的N个字符之后(我不需要用户光标选择位置)。这可能吗?

jslywgbw

jslywgbw1#

正确的方法(使用DOM-Core接口,包括the splitText() method)是:

var p = document.getElementById('myParagraph');
var text = p.childNodes[0];
var at = 5;

// create new span node with content
var span = document.createElement("span");
span.appendChild(document.createTextNode('ipsum'));

// Split the text node into two and add new span
p.insertBefore(span, text.splitText(at));
pnwntuvh

pnwntuvh2#

你需要将文本放入一个变量中,然后将其从DOM中移除。将其拆分,然后插入第一部分,然后插入span节点,然后插入第二部分。

var p = document.getElementById('myParagraph');
var text = p.childNodes[0];

// Split the text
var len = 5
var text1 = text.nodeValue.substr(0, len);
var text2 = text.nodeValue.substr(len);

var span = document.createElement('span');
span.appendChild(document.createTextNode(' dolor'));

// Remove the existing text
p.removeChild(p.childNodes[0]);

// Put the new text in
p.appendChild(document.createTextNode(text1));
p.appendChild(span);
p.appendChild(document.createTextNode(text2));
dbf7pr2w

dbf7pr2w3#

你可以检查nodes innerHTML属性并修改它。或者你可以查看childNodes集合并处理其中的元素(删除旧的文本节点并在其位置插入新节点)。

相关问题