JSFiddle - React, Tailwind, and code Playground

HTML

<div id = "outer">
foobarfoobarfoobar
<div id = "inner">
inner
</div>
</div>

<button id = "b">
push
</button>

JavaScript

inner.onclick = function(){alert("hello!")}

b.onclick = function(){
   var range = getSelection().getRangeAt(0)
   var text = range + ""
   range.deleteContents()
   range.insertNode(document.createTextNode(text.replace(/foo/g, "moo")))
}