javascript把某段文本标红的方法?

我想把一段文本(text)里面的某一段关键字标红,需要标红的字符串都存在一个列表里(dogs),效果类似于百度搜索:

标红示例

目前的想法是,遍历列表,然后用indexOf方法找到需要标红的子串位置,然后用拼接的方法,为它加上一个em的标签,然后修改一下em的CSS样式,以完成标红。下面是我的代码

let text = keypoint_data[i][0];
let dogs = keypoint_data[i][2];
//处理标红
for (let i = 0;i < dogs.length; i++){
    if(text.indexOf(dogs[i]) > -1){
        let start = text.indexOf(dogs[i]);
        let end = start + dogs[i].length;
        let em = text.substring(start, end);
        let from_start_to_em = text.substring(0, start);
        let from_em_to_end = text.substring(end);
        text = from_start_to_em + "<em>" + em + "</em>" + from_em_to_end;
    }
}

结果效果是这样子的。...并没有起效。求问大家这个应该怎么处理
clipboard.png

阅读 4.4k
1 个回答
✓ 已被采纳新手上路,请多包涵

其实答案特别简单...我原来用的是content.text(text)方法,只需要把content.text()改成content.html( ) 就可以了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题