拆分文本节点
Split text node
我有div[contenteditable=true]。文本可以是粗体/斜体/下划线。
<div contenteditable=true>
<b>Text</b>
</div>
我需要将文本节点拆分为2个块:。
<div contenteditable=true>
<b>Te</b><b>xt</b>
</div>
仅适用于Chrome和Safari。
查看Text.splitText
。
var b = document.querySelectorAll("div[contenteditable='true'] > *")[0];
var p = b.parentNode; // the element's parent
var t = b.firstChild; // the textNode content
var newText = t.splitText(2); // splits the node, leaving it in place
var copy = document.createElement(b.tagName); // make another wrapper
copy.appendChild(b.lastChild); // move second text into the copy
p.insertBefore(copy, b.nextSibling); // put the copy into the DOM.
请参阅http://jsfiddle.net/alnitak/JbEnL/
当您指定Chrome和Safari时,我已经使用querySelectorAll
来查找初始的内部DOM元素。
这里有一种方法,可以获取div中的第一个粗体标记,并将其中的文本拆分为两个粗体标记:
初始HTML:
<div id="target" contenteditable=true>
<b>Text</b>
</div>
代码:
var bold = document.getElementById("target").getElementsByTagName("b")[0];
var txt = bold.innerHTML;
bold.innerHTML = txt.substr(0,2);
var newBold = document.createElement("b");
newBold.innerHTML = txt.substr(2);
bold.parentNode.insertBefore(newBold, bold.nextSibling);
工作演示:http://jsfiddle.net/jfriend00/KsPrg/
相关文章:
- Javascript,将文本添加到具有现有文本节点的元素中
- 拆分文本节点
- 使用TreeWalker检索非Javascript文本节点
- JSTree's data.rslt.obj.text()返回一个文本数组,而不是所需节点的文本
- jquery在元素中查找文本节点,并使用标记进行连接和包装
- JavaScript 文本节点属性
- 如何在所有节点中获取页面的文本
- 根据类型更改 jstree 节点文本颜色
- 获取xml节点文本
- 如何在JavaScript中使用主节点文本对json对象进行排序
- 如何通过按钮单击和鼠标悬停/鼠标退出显示和隐藏节点文本?D3/JS.
- 在 jsTree 中,使节点文本可单击的最佳方法是什么(用于选中复选框)
- Javascript DOM,在不丢失间距信息的情况下获取节点文本
- 更改文本节点文本
- 正在更改jsTree中的节点文本
- 函数,用于比较DOM树中的两个节点文本
- 谷歌图表Sankey -节点文本样式
- 如何在JavaScript中将DOM节点文本值转换为UTF-8
- 不能改变js节点文本的颜色
- 如何在 arbor js 中为每个节点文本添加新行字符