35 回答
TA贡献2036条经验 获得超8个赞
大神, 你这得到的结构是Where there is great love, <span style="background-color:yellow;><span style="color: #0000ff; font-weight: bold;">there</span> are always</span> miracles. 只有there被高亮了。 我的需求是words 数组里的都得高亮。、
多谢了。 能帮忙继续写写demo吗?
TA贡献1786条经验 获得超13个赞
@GEEKc: 需要将原本的高亮干掉? 如果不需要的话,直接取出result = innerHTML.replace(/xxx/gi, '高亮之后的html代码'); 然后再赋值回去。。
TA贡献1877条经验 获得超6个赞
对, 就是关键字(可能是一个句子也可能只是一个单词)高亮加黄色背景。但是原始的字符串中可能某些单词已经被做其他高亮处理(加粗加蓝色), 是需要用正则替换, 但是这个正则不会写。
幻老师可以帮忙写一个小的demo吗? 多谢了。
TA贡献2051条经验 获得超10个赞
@Yu: 这个background-color:yellow;font-we;ight:inherit;是写错了还是正则的语法啊?
算了, 不纠结了, 答案已经有了。 谢谢Yu老师悉心指导。
TA贡献1802条经验 获得超6个赞
@GEEKc: var tem = sourceText .match(/(<span[^>]*>)*\s*there\s*(<\/span>)*\s*(<span[^>]*>)*\s*are\s*(<\/span>)*\s*(<span[^>]*>)*\s*always\s*(<\/span>])*/g);
for(tem){
sourceText=sourceText .replace(tem[i],<span>tem[i]</span>)
}
console.log(sourceText)
TA贡献1794条经验 获得超8个赞
@司幸: 对,就是可能的情况是
<span style="color: #0000ff; font-weight: bold;">there</span> <span style="color: #0000ff; font-weight: bold;">
are</span> always 替换成 <span style="background-color:yellow;font-we;ight:inherit;"><span style="color: #0000ff; font-weight: bold;">there</span> <span style="color: #0000ff; font-weight: bold;">are</span> always</span>
也可能是there <span style="color: #0000ff; font-weight: bold;">are</span> always 替换成 <span style="background-color:yellow;font-we;ight:inherit;">there <span style="color: #0000ff; font-weight: bold;">are</span> always</span>
还可能是there are always 替换成 <span style="background-color:yellow;font-we;ight:inherit;">there are always</span>
也就是每个单词都有可能会被<span style="color: #0000ff; font-weight: bold;"></span>这么一组span标签所标注。我们需要从原始字符串中找到一串指定字符串加上<span style="background-color:yellow;font-we;ight:inherit;"></span>
多谢司幸老师, 有劳了 :[
TA贡献1796条经验 获得超4个赞
@GEEKc: 了解了,你的意思是 <span><span><span>there</span></span> are</span>aways 这种情况也是会出现的吗。替换后<span><span><span><span>there</span></span> are</span>aways </span>?
TA贡献1906条经验 获得超10个赞
@司幸: 因为sourceText在这之前可能就已经有span标签存在字符串里面了,如果把这些处理掉的话,是能匹配到there are always,也能追加进去,但是之前的标签就没了。这里需要保存原来的标签。
添加回答
举报