在JavaScript DOM中拆分节点内容

我有一个场景,我需要将节点拆分为给定的祖先,例如

hi there, how are you doing today? 

需要分成:

 hi there, how are y 

 ou doing today? 

我该怎么做呢?

这是一个适用于使用Range现代浏览器的解决方案。 使用TextRange可以为IE <9做类似的事情,但我使用Linux,因此我无法轻松访问这些浏览器。 我不确定你想要的功能,返回节点或只是替换内联。 我只是猜了一下并做了替换内联。

 function splitNode(node, offset, limit) { var parent = limit.parentNode; var parentOffset = getNodeIndex(parent, limit); var doc = node.ownerDocument; var leftRange = doc.createRange(); leftRange.setStart(parent, parentOffset); leftRange.setEnd(node, offset); var left = leftRange.extractContents(); parent.insertBefore(left, limit); } function getNodeIndex(parent, node) { var index = parent.childNodes.length; while (index--) { if (node === parent.childNodes[index]) { break; } } return index; } 

演示: jsbin

它期望一个nodeTextNode ,尽管它可以使用一个Element ; 偏移量将根据Range.setStart的行为而有所不同

请参阅Text.splitText方法。

不确定这对你有帮助,但这就是我想出来的……

将函数传递给您希望移动到的元素和节点标记名称字符串。

 hi there, how are you doing today?