JQuery – 更改文本中字符串的颜色,忽略之间的
我需要更改文本中特定子字符串的颜色。 文字如下:
SOME TE
XT IS HER
E.
我厌倦了jquery的.replace()
函数,它的问题在于,正如你在上面看到的那样,文本与那些
分开了。 我怎么能“忽略”他们呢? 例如,我想用TEXT
替换String TEXT
有没有人知道如何解决这个问题?
不需要jQuery。 虽然我根本没有测试这个,所以可能需要调整。
var customReplace = function(str, subStr, color) { var words = str.split(' '); for (var i = words.length - 1; i >= 0; i--) { var word = words[i].replace(/
/g, ''); if (word === subStr) { words[i] = '' + words[i] + ''; } } return words.join(''); }
我认为一个好主意可能会像下面这样:
- 精确所有文本节点并将它们包装在一个span中
- 重新插入所有标签
var ALL_TAGS_REGEX = /(.+)(<{1}\/{0,1}.+>{1})/g; document.addEventListener("DOMContentLoaded", function() { document.body.innerHTML = document .body .innerHTML .replace(ALL_TAGS_REGEX, '$1$2') ; });
.highlight { background: cyan; }
I am a string,
something else but no text node Other text nodes at libitum
标签是中断的,颜色不适用于文本,这在最终的html渲染时不会被视为普通文本