我目前嘗試用<span>WORD</span
元素替換髮音中的某些單詞。我從後端的單詞中獲得開始和結束索引。一個話語可以有幾個詞將被替換。所以我只是迭代單詞的數組來替換,並嘗試替換話語中的單詞。innerHtml.replace替換標籤而不僅僅是文字
但是,我試着用innerHtml.replace(word, <span>word</span>)
來做。這裏的問題是,例如當第二個單詞是'sp'時,第一個單詞的標籤的sp被替換爲我的話語中的單詞'sp'。
然後我嘗試用這個詞替換我放入詞的開始和結束索引(我認爲會解決問題)。但是,似乎如果開始和結束索引指向'sp',它仍然會取代span的一部分,而不是我想要替換的詞。
所以,我正在尋找一種方法來替換話語中的單詞而不是<span>WORD</span>
的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);
你可以通過'label'找到的所有子節點進行迭代,並做他們的innerText屬性替換。使用innerHTML不會因爲你發現的原因而工作。 – James
@James所以在開始時,我的標籤只有一個子節點,這是整個話語。那麼,我想那樣不行? – threxx