You can do an in-depth search and check the Node type:
var content = document.getElementById("content");
var txtFind = document.getElementById("txtFind");
var txtReplace = document.getElementById("txtReplace");
var btReplace = document.getElementById("btReplace");
var replaceText = function (elem, find, replace) {
for (var indice in elem.childNodes) {
var childNode = elem.childNodes[indice];
if (childNode.nodeType == 3) {
childNode.data = childNode.data.replace(find, replace);
}
if (childNode.nodeType == 1) {
replaceText(childNode, find, replace);
}
}
}
btReplace.onclick = function () {
var find = new RegExp(txtFind.value, 'g');
var replace = txtReplace.value;
replaceText(content, find, replace);
}
<div id="form">
<div>
<label for="txtFind" >Find:</label>
<input id="txtFind" type="text" />
</div>
<div>
<label for="txtReplace" >Replace:</label>
<input id="txtReplace" type="text" />
</div>
<div>
<input id="btReplace" type="button" value="Substituir" />
</div>
<div>
<div id="content">
Teste - Lorem Ipsum
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce molestie urna dignissim justo iaculis aliquam. Ut auctor sit amet justo laoreet semper. Curabitur hendrerit ornare vulputate. In dictum dui et sem ultricies, id rhoncus nisi dignissim. Suspendisse ac enim sollicitudin, gravida leo eu, fringilla nisl. Suspendisse potenti. Aenean blandit ut purus eget varius. Fusce ornare pretium mauris, placerat viverra est facilisis in. Nunc elementum, leo ac tincidunt luctus, ipsum ipsum laoreet tortor, finibus pulvinar enim erat sit amet mi. Phasellus vulputate fringilla tortor, id tempus urna suscipit id. Vivamus ipsum libero, lacinia quis felis mollis, luctus viverra mi. Praesent id elementum metus, quis porttitor est. Integer condimentum rhoncus eros eget varius. Vestibulum vitae arcu libero.</p>
<p>Suspendisse ultrices neque ornare convallis posuere. Curabitur consectetur libero ut urna sodales, eget vehicula magna sodales. Sed a tincidunt lacus, non varius odio. Morbi mollis hendrerit mollis. Duis mauris libero, semper eu lectus ut, porta accumsan diam. Sed tristique tortor est, non luctus nulla cursus quis. Proin lacinia, leo vel mattis efficitur, turpis nulla finibus nulla, vel consectetur erat dui ut turpis. Curabitur sagittis elementum ante a rhoncus. In in lorem et turpis condimentum rutrum et at metus. Proin vitae tellus elementum, feugiat nulla ac, porta sapien. Donec dapibus nulla sit amet urna porta consectetur. Donec tristique massa justo, vel finibus turpis aliquam et. Ut nisl elit, fermentum et ultrices sit amet, rutrum a est. Proin vel varius neque. Integer bibendum porta neque, at vulputate ante bibendum vel.</p>
<p>Sed laoreet nisl in nisl tempor, vitae bibendum arcu porta. Vivamus feugiat felis euismod magna tincidunt, non cursus nunc ultrices. Interdum et malesuada fames ac ante ipsum primis in faucibus. Cras ac mi eu urna molestie vehicula vitae a quam. Morbi et eros nec libero auctor imperdiet. Nunc pharetra sapien sem, in molestie tellus pellentesque eu. Mauris sit amet ante placerat diam pulvinar tempus. Morbi mollis imperdiet tortor. Pellentesque mollis leo non tellus congue, non molestie quam condimentum. Mauris malesuada, felis nec faucibus faucibus, purus ante faucibus nulla, et hendrerit nisl tortor a turpis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Pellentesque tempus eros ut massa iaculis euismod. Morbi vestibulum enim nisl. Sed volutpat tristique consectetur.</p>
<p>Proin non commodo leo, non ornare mi. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nam egestas est non malesuada iaculis. Ut congue laoreet vehicula. Nunc velit enim, sollicitudin quis orci tristique, lacinia lacinia augue. Nam at mattis purus, eget pulvinar odio. Duis et dapibus eros. Praesent rhoncus vitae turpis non tempus. Sed semper sit amet ipsum ac interdum. Nunc pulvnisi, vitae aliquam est feugiat eu. Pellentesque scelerisque nisl et molestie malesuada. Maecenas ullamcorper sapien quis enim dictum, sed pellentesque risus consequat.</p>
<p>Donec porta turpis at est rutrum, sed interdum dui semper. Donec lectus ligula, egestas ut sagittis non, mattis eu dolor. Cras convallis sem non urna tristique, ac sagittis magna egestas. Maecenas imperdiet, nulla at mattis sodales, neque nibh ullamcorper enim, at sollicitudin eros sem at diam. Sed dui magna, pretium a lobortis id, accumsan ac nibh. Ut neque quam, elementum in fringilla elementum, scelerisque vel est. Etiam blandit, dolor eu suscipit pharetra, massa tellus facilisis sem, nec elementum eros est ac libero. Nam faucibus mattis ex, ac lacinia metus finibus eget. Cras sit amet turpis rutrum, volutpat tortor non, cursus nibh. Vestibulum congue justo nec elit fermentum, mattis sodales sem convallis.</p>
</div>
You can use the
innerText
instead ofinnerHTML
. If not, I believe you’ll have to do an in-depth search.– Tobias Mesquita
The problem is that the
innerText
, depending on the context in which it is searching, it will turn the tags into text only.– Wallace Maxters