我正在尝试手动选择文本。 window.getSelection().getRangeAt(0);
行用于窗口选择的文本。但我希望这个由我预先选择。
foo=function()
{
var selection= "Lorem ipsum dolor"; // Instead of this line window.getSelection().getRangeAt(0);
var selectedText = selection.extractContents();
var span= document.createElement("span");
span.style.backgroundColor = "yellow";
span.appendChild(selectedText);
selection.insertNode(span);
}
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
<input type="button" onclick="foo();" value="FOO"/>
最佳答案
有github项目findAndReplaceDOMText 。一个可能有用的 JavaScript 库:它在给定 DOM 节点中搜索正则表达式匹配,并用您可以指定的节点或文本片段替换或包装每个匹配。
您还可以使用window.find()
/createTextRange
。 This answer展示了如何做。它将匹配跨越元素边界的文本,并使用 document.execCommand()
为您突出显示。
最后 - 如果我查看您的示例并且您只想替换文本节点的特定片段 - 您可以使用如下正则表达式:
element.innerHTML = element.innerHTML.replace(
/Lorem ipsum dolor/gi,
'<span class="f">$0</span>'
);
关于Javascript window.getSelection() 替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26980987/