AngularJS改變html中特定字符串的顏色


  例如html內容為:“一九二五年創作的[[《傷逝》是魯迅先生唯一一部反映青年男女愛情的小說。]]作者將一對青年的愛情故事放置到“五四”退潮后依然濃重的封建黑暗背景中,透過他們的悲劇命運寓示人們要將個性解放與社會解放結合起來,引領青年去尋求“新的生路”,[[具有深刻的歷史意義。]]”

  改變上述內容“[[]]”(“[[]]”為特殊標記)所包含的內容(即“《傷逝》是魯迅先生唯一一部反映青年男女愛情的小說。”,“具有深刻的歷史意義。”)的顏色,方法為采用正則表達式匹配所有需要改變顏色的字符串,在此基礎上改變匹配字符串顏色,並將特殊標記替換為空字符。

js代碼如下:

window.onload = function() {

  //匹配所有字符串並改變其顏色,其中"/g"表示全局匹配
  document.body.innerHTML = document.body.innerHTML.replace(/\[\[(.*?)\]\]/g, '<font color="#FF6600">$&</font>');

  //特殊標記替換為空字符

  document.body.innerHTML = document.body.innerHTML.replace(/\[|\]/g, '');
}

可能存在的問題:body.innerHTML會導致ng-click點擊事件失效,解決辦法為不采用body.innerHTML,而是對span或label的innerHTML單獨設置顏色,代碼如下:

    var stuAnswerList = document.getElementsByName("stuAnswer");
    for(var i = 0; i < stuAnswerList.length; i++){
        stuAnswerList[i].innerHTML = stuAnswerList[i].innerHTML.replace(/\[\[(.*?)\]\]/g, '<font color="#FF6600">$&</font>').replace(/\[|\]/g, '');
    }

或者采用ng-bind-html:

html:

<span id="stuAnswer" ng-bind-html="stuAnswer|stringKeyword"></span>

js:

app.filter("stringKeyword", ["$sce", function($sce) {
    return function(text) {
        if (text) {
            text = text.replace(/\[\[/g, "<span style=\"color: #FF6600;\">").replace(/\]\]/g, "</span>");
            return $sce.trustAsHtml(text);
        }
    }
}]);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM