【发布时间】:2013-08-19 10:28:06
【问题描述】:
我目前正在使用原生 JS,我正在尝试在 contenteditable div 中构建突出显示文本功能。我已经成功构建了突出显示功能,但是当我想使用单个按钮在突出显示和取消突出显示文本之间切换时遇到了问题。所以我通过
获取所选文本和所选文本的范围var selectedText = window.getSelection();
var range = selectedText.getRangeAt(0);
我正在使用作为范围对象函数的环绕内容来包装选定的文本。
var wrapper = document.createElement("span");
wrapper.setAttribute("class","highlight");
但是现在,当我试图取消突出显示突出显示的文本的某些部分和纯文本的某些部分时,自然行为应该取消突出显示突出显示的文本并突出显示纯文本。为此,我通过
克隆范围var clone = range.cloneContents()
var nodeInBetween = clone.childNodes //array of nodes between the start and end nodes.
现在我面临两个问题。首先,我需要删除 span.highlight 节点并再次将其替换为 TextNode 以使其未突出显示,并且我需要一些方法来用 span 包装 textnode。不幸的是,没有办法将文本节点包装为范围变量。
【问题讨论】:
标签: javascript methods native