问题描述
我想在文本中突出显示URL中出现的所有单词。 对于第一次出现,一切正常。但是我不知道如何去下一个。
highlightText: function(urlParams) {
var urlSearch = window.location.search;
var urlParams = new URLSearchParams(urlSearch);
var searchText = urlParams.get('search');
if (window.find(searchText)) {
var el = document.getElementById('collection-content');
text = el.innerHTML;
marked = text.replace(searchText,"<mark>" + searchText + "</mark>");
el.innerHTML = marked;
}
}
我尝试在if之前添加一个while(window.find(searchText)
,但它不起作用,它似乎仅在我的单词首次出现时循环播放。
预先感谢
解决方法
如果您不使用正则表达式,那么它将仅替换第一次出现的正则表达式,您可以尝试这样做,并根据需要修改正则表达式。
highlightText: function(urlParams) {
var urlSearch = window.location.search;
var urlParams = new URLSearchParams(urlSearch);
var searchText = urlParams.get('search');
if (window.find(searchText)) {
var el = document.getElementById('collection-content');
text = el.innerHTML;
marked = text.replace(
RegExp(`(${searchText})`),"<mark>" + searchText + " </mark>");
el.innerHTML = marked;
}
}
注意:匹配项区分大小写