I am trying to select text manually. window.getSelection().getRangeAt(0);
line used for window selected text. But I want this pre-selected by me.
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"/>
There is the github project findAndReplaceDOMText. A javascript library which might be helpful: It searches for regular expression matches in a given DOM node and replaces or wraps each match with a node or piece of text that you can specify.
You could also use
window.find()
/createTextRange
. This answer shows how to do it. It will match text that crosses element boundaries and does the highlighting for you usingdocument.execCommand()
.Finally - if I look at your example and you just want to replace a specific fragment of a text node - you could use a regular expression like this: