Javascript innerHtml.replace将替换标记,而不仅仅是文本

Javascript innerHtml.replace将替换标记,而不仅仅是文本,javascript,html,css,angularjs,innerhtml,Javascript,Html,Css,Angularjs,Innerhtml,我目前试图用单词替换话语中的某些单词,下面是我将如何实现的。在本例中,锚定标记的html属性包含“oo”,tfoot标记也包含“oo”,它们不会被更改 function replaceText(对象、搜索、包装、元素类){ 开关(对象节点类型){ 案例3://它是一个文本节点 if(对象nodeValue.indexOf(搜索)>-1){ 变量位=对象节点值分割(搜索); var nextSib=obj.nextSibling; obj.nodeValue=位[0]; 对于(变量i=1;i

我目前试图用
单词替换话语中的某些单词,下面是我将如何实现的。在本例中,锚定标记的html属性包含“oo”,tfoot标记也包含“oo”,它们不会被更改

function replaceText(对象、搜索、包装、元素类){
开关(对象节点类型){
案例3://它是一个文本节点
if(对象nodeValue.indexOf(搜索)>-1){
变量位=对象节点值分割(搜索);
var nextSib=obj.nextSibling;
obj.nodeValue=位[0];
对于(变量i=1;i
.myspanclass{
颜色:红色;
}
Noonhour
胡闹
月亮是一个气球
哎呀!

您可以遍历在
标签中找到的所有子节点
并对其innerText属性进行替换。由于您发现的原因,使用innerHTML将不起作用。@James所以在开始时,我的标签只有一个子节点,即整个语句。所以,我想那是行不通的?这对我来说行不通,因为nodeValue只接受文本,但我的“替换”总是一个html内容(比如word)。好吧,我没有正确阅读你的问题(这可能解释DV)。无论如何,请尝试一下,它不再使用搜索正则表达式和替换文本,而是使用搜索字符串、元素名称和元素将使用的类名。这很棘手,因为您必须大量创建新元素,因为您无法将html放入文本节点。
var label = document.getElementById('match-text' + index);
      label.innerHTML = label.innerHTML.replace(label.innerText.substring(entity.start, entity.end),'<span ng-click="showEntityDetailsPage($event, ' + index + ', ' + entityIndex + ')" style="background-color:'
      + color + '; border: 3px solid ' + borderColor + ';" class="highlighted-entities">' + label.innerText.substring(entity.start, entity.end) + '</span>');
      $compile(label)($scope);