私は現在、発声の特定の単語を<span>WORD</span
要素に置き換えようとしています。私はバックエンドからの単語から開始と終了のインデックスを取得します。発声にはいくつかの単語が含まれ、置き換えられます。だから私は置き換える単語の配列を繰り返し、発言の単語を置き換えようとします。innerHtml.replaceはテキストだけでなくタグを置き換えます
しかし、私はinnerHtml.replace(word, <span>word</span>)
でそれをやってみました。ここでの問題は、例えば第2の単語が「sp」であるとき、第1の単語のタグのspが、私の発声において単語「sp」の代わりに置き換えられることである。
私は、単語の開始と終了のインデックスに単語を置き換えようとしました(これは問題を解決すると考えていました)。しかし、開始点と終了点が 'sp'の点を指していて、スパンの部分を置き換えていて、置きたい言葉ではないように思えます。
したがって、私は発言の中の単語だけを置き換え、HTMLエレメントは<span>WORD</span>
と置き換えない方法を探しています。
私のコード今:私のコメントにさらに
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);
あなたはlabel' 'で見つかったすべての子ノードを反復処理でき、そののinnerTextプロパティに置き換えます。 innerHTMLを使用することは、あなたが発見した理由のためには機能しません。 – James
@Jamesだから、冒頭には、私のラベルには発声全体が1つの子ノードしかありません。だから、私はそれが動作しないだろうと思う? – threxx