正在遍历每个文本节点并查找搜索字符串是否在该文本节点中可用。如果其呈现将环绕span节点进行高亮显示。示例代码在下面的链接中可用。不区分大小写在DOM中搜索字符串
Demo:
http://jsfiddle.net/LcRDz/
现在如果用户给出了一个字,就只搜索这个词。 现在我需要的是搜索DOM的单词而不考虑case.例如,如果我的搜索词是''',它应该突出显示单词THE,THE,。
这可能吗?任何人都可以提出解决方案吗?
正在遍历每个文本节点并查找搜索字符串是否在该文本节点中可用。如果其呈现将环绕span节点进行高亮显示。示例代码在下面的链接中可用。不区分大小写在DOM中搜索字符串
Demo:
http://jsfiddle.net/LcRDz/
现在如果用户给出了一个字,就只搜索这个词。 现在我需要的是搜索DOM的单词而不考虑case.例如,如果我的搜索词是''',它应该突出显示单词THE,THE,。
这可能吗?任何人都可以提出解决方案吗?
在与indexOf
进行检查之前,在两个值上均使用toLowercase
,从而使比较不区分大小写。
//Notice both n.nodeValue and word are sent to lowercase.
for (var i;
(i = n.nodeValue.toLowerCase().indexOf(word.toLowerCase(), i)) > -1;
n = after) {
var after = n.splitText(i + word.length);
var highlighted = n.splitText(i);
var span = document.createElement('span');
span.className = "spanClass";
span.style.backgroundColor = "red";
span.appendChild(highlighted);
after.parentNode.insertBefore(span, after);
}
JS FIDDLE:http://jsfiddle.net/LcRDz/2/
你应该只通过对矫正
for (var i;
(i = n.nodeValue.indexOf(word, i)) > -1; n = after)
与
for (var i;
(i = n.nodeValue.toLowerCase().indexOf(word.toLowerCase(), i)) > -1; n = after)
在highlightWords方法更改为循环从
解决原文:
for (var i;
(i = n.nodeValue.indexOf(word, i)) > -1; n = after)
新:
for (var i;
(i = n.nodeValue.toLowerCase().indexOf(word.toLowerCase(), i)) > -1; n = after)
'word'应该也可以发送到小写 –