js关键字高亮
<style>
.highlight{
background:green;
font-weight:bold;
color:white;
}
</style>
<p><input id=\"input\"/><button =\"highlight()\">搜索</button></p>
<div id=\"div\">
<p>搜索,文章关键字高亮显示aaa</p>
<p>搜索,文章关键字高亮显示bbb</p>
<p>搜索,文章关键字高亮显示ccc</p>
<p>搜索,文章关键字高亮显示ddd</p>
<p>搜索,文章关键字高亮显示eee</p>
<p>搜索,文章关键字高亮显示fff</p>
<p>搜索,文章关键字高亮显示hhh</p>
< >
function encode(s){
return s.replace(/&/g,\"&\").replace(/</g,\"<\").replace(/>/g,\">\").replace(/([\\\\\\.\\*\\[\\]\\(\\)\\$\\^])/g,\"\\\\$1\");
}
function decode(s){
return s.replace(/\\\\([\\\\\\.\\*\\[\\]\\(\\)\\$\\^])/g,\"$1\").replace(/>/g,\">\").replace(/</g,\"<\").replace(/&/g,\"&\");
}
function highlight(s){
var s=document.getElementById(\"input\").value;
console.log(s);
if (s.length==0){
alert(\'搜索关键词未填写!\');
return false;
}
s=encode(s);
var obj=document.getElementById(\"div\");
var t=obj.innerHTML.replace(/<span\\s+class=.?highlight.?>([^<>]*)<\\/span>/gi,\"$1\");//把匹配到的文字替换成<span>???</span>
obj.innerHTML=t;
var cnt=loopSearch(s,obj);
t=obj.innerHTML
console.log(t);
var r=/{searchHL}(({(?!\\/searchHL})|[^{])*){\\/searchHL}/g
t=t.replace(r,\"<span class=\'highlight\'>$1</span>\");
obj.innerHTML=t;
}
function loopSearch(s,obj){
var cnt=0;
if (obj.nodeType==3){
cnt=replace(s,obj);
return cnt;
}
for (var i=0,c;c=obj.childNodes[i];i++){
if (!c.className||c.className!=\"highlight\")
cnt+=loopSearch(s,c);
}
return cnt;
}
function replace(s,dest){
var r=new RegExp(s,\"g\");
var tm=null;
var t=dest.nodeValue;
var cnt=0;
if (tm=t.match(r)){
cnt=tm.length;
t=t.replace(r,\"{searchHL}\"+decode(s)+\"{/searchHL}\")
dest.nodeValue=t;
}
return cnt;
}
</ >
jq关键字高亮
/*JQ关键词检索高亮标出
htmlId 需要检索的HTML内容ID
htmlContent 关键字,多个以空格隔开
*/
function keywordHighlight(htmlId,htmlContent) {
console.log(090)
var content= $(\"#\"+htmlId).html();//获取内容
if ($.trim(htmlContent)==\"\"){
return;//关键字为空则返回
}
var htmlReg = new RegExp(\"\\<.*?\\>\", \"i\");
var arrA = new Array();
//替换HTML标签
for (var i = 0; true; i++) {
var m = htmlReg.exec(content);
if (m) {
arrA[i] = m;
}else {
break;
}
content = content.replace(m, \"{[(\" + i + \")]}\");
}
words = unescape(htmlContent.replace(/\\+/g, \' \')).split(/\\s+/);
//替换关键字
for (w = 0; w < words.length; w++) {
var r = new RegExp(\"(\" + words[w].replace(/[(){}.+*?^$|\\\\\\[\\]]/g, \"\\\\$&\") + \")\", \"ig\");
content = content.replace(r, \"<b><span style=\'color:red;font-size:16px;\'><u>\"+words[w]+\"</u></span></b>\");//关键字样式
}
//恢复HTML标签
for (var i = 0; i < arrA.length; i++) {
content = content.replace(\"{[(\" + i + \")]}\", arrA[i]);
}
$(\"#\"+htmlId).html(content);
}
继续阅读与本文标签相同的文章
-
企业站小白如何选择适合自己的云服务器配置?最后我选择了阿里云
2026-05-18栏目: 教程
-
Phper 学 C 兴趣入门 - 为什么 php 手册里经常说某个字符串函数是二进制安全的
2026-05-18栏目: 教程
-
Kubernetes中将Delete类型的PV更新为Retain类型
2026-05-18栏目: 教程
-
阿里云服务器计算型实例c5 适合中大型网站及外贸主题网站使用
2026-05-18栏目: 教程
-
Java工程师入门区块链的7个开源项目
2026-05-18栏目: 教程
