例如,我有这样的文字:
Some test <span> in span1</span> sss <span>in span2</span> end of text.
当我选择“测试spa中的span1 sss”时,我想删除所选范围的父跨度并创建新范围 这将包含我选择的文字。
Some<span> test in span1 sss in spa</span>n2 end of text.
我正在使用window.getSelection()
,范围,节点
请帮忙!
答案 0 :(得分:4)
您可以使用从所选内容中获得的范围的deleteContents()
,toString()
和insertNode()
方法执行此操作。
以下内容适用于除IE&lt; = 8之外的所有主流浏览器。对于这些浏览器,您需要采用不同的方法,如果需要,我可以概述。
代码:
var sel = window.getSelection();
if (sel.rangeCount > 0) {
var range = sel.getRangeAt(0);
var newSpan = document.createElement("span");
var selectedTextNode = document.createTextNode( range.toString() );
newSpan.appendChild(selectedTextNode);
range.deleteContents();
range.insertNode(newSpan);
range.selectNode(newSpan);
sel.removeAllRanges();
sel.addRange(range);
}