JavaScript搜索关键字高亮的实现
2014-12-02 16:54
633 查看
高亮功能主要是指对页面中指定区域的指定文字进行高亮显示,也就是背景着色。一般在搜索结果页面会经常用到这个功能。
下面就为大家提供一种解决方案,用javascript实现。
首先在<head>中引入下面javascript方法:
上面的fHl方法就是用来实现高亮的,参数的含义在注释中有写。
然后在页面最后调用fHl方法,对指定区域指定文字高亮着色,例如:
下面就为大家提供一种解决方案,用javascript实现。
首先在<head>中引入下面javascript方法:
01 | <script type= "text/javascript" > |
02 | //<![CDATA[ |
03 | //--------begin function fHl(o,flag,rndColor,url)------------------// |
04 | function fHl(o,flag,rndColor,url){ |
05 | /// <summary> |
06 | /// 使用 javascript HTML DOM 高亮显示页面特定字词. |
07 | /// 实例: |
08 | /// fHl(document.body,'纸伞|她'); |
09 | /// 这里的body是指高亮body里面的内容。 |
10 | /// fHl(document.body,'希望|愁怨',false,'/'); |
11 | /// fHl(document.getElementById('at_main'),'独自|飘过|悠长',true,'search.asp?keyword='); |
12 | /// 这里的'at_main'是指高亮id='at_main'的div里面的内容。search.asp?keyword=指给关键字加的链接地址, |
13 | /// 我这里加了一个参数,在后面要用到。可以是任意的地址。 |
14 | /// </summary> |
15 | /// <param name="o" type="Object"> |
16 | /// 对象,要进行高亮显示的对象. |
17 | /// </param> |
18 | /// <param name="flag" type="String"> |
19 | /// 字符串,要进行高亮的词或多个词,使用 竖杠(|) 分隔多个词 . |
20 | /// </param> |
21 | /// <param name="rndColor" type="Boolean"> |
22 | /// 布尔值,是否随机显示文字背景色与文字颜色,true 表示随机显示. |
23 | /// </param> |
24 | /// <param name="url" type="String"> |
25 | /// URI,是否对高亮的词添加链接. |
26 | /// </param> |
27 | /// <return></return> |
28 | var bgCor=fgCor= '' ; |
29 | if (rndColor){ |
30 | bgCor=fRndCor(10,20); |
31 | fgCor=fRndCor(230,255); |
32 | } else { |
33 | bgCor= '#F0F' ; |
34 | fgCor= 'black' ; |
35 | } |
36 | var re= new RegExp(flag, 'i' ); |
37 | for ( var i=0; i<o.childNodes.length; i++){ |
38 | var o_=o.childNodes[i]; |
39 | var o_p=o_.parentNode; |
40 | if (o_.nodeType==1) { |
41 | fHl(o_,flag,rndColor,url); |
42 | } else if (o_.nodeType==3) { |
43 | if (!(o_p.nodeName== 'A' )){ |
44 | if (o_.data.search(re)==-1) continue ; |
45 | var temp=fEleA(o_.data,flag); |
46 | o_p.replaceChild(temp,o_); |
47 | } |
48 | } |
49 | } |
50 | //------------------------------------------------ |
51 | function fEleA(text,flag){ |
52 | var style= ' style=" width:auto !important; margin:0px !important; padding:0px !important; border:0px !important; outline:0px !important; float:none !important; vertical-align:baseline !important; position:static !important; left:auto !important; top:auto !important; right:auto !important; bottom:auto !important; height:auto !important; line-height:1.1em !important; min-height:inherit !important; background:none !important;">+bgCor+ ';color:' +fgCor+ ';" ' |
53 | var o=document.createElement( 'span' ); |
54 | var str= '' ; |
55 | var re= new RegExp( '(' +flag+ ')' , 'gi' ); |
56 | if (url){ |
57 | str=text.replace(re, '<a href="' +url+ |
58 | '$1"' +style+ '>$1</a>' ); //这里是给关键字加链接,红色的$1是指上面链接地址后的具体参数。 |
59 | } else { |
60 | str=text.replace(re, '<span ' +style+ '>$1</span>' ); //不加链接时显示 |
61 | } |
62 | o.innerHTML=str; |
63 | return o; |
64 | } |
65 | //------------------------------------------------ |
66 | function fRndCor(under,over){ |
67 | if (arguments.length==1){ |
68 | var over=under; |
69 | under=0; |
70 | } else if (arguments.length==0){ |
71 | var under=0; |
72 | var over=255; |
73 | } |
74 | var r=fRandomBy(under,over).toString(16); |
75 | r=padNum(r,r,2); |
76 | var g=fRandomBy(under,over).toString(16); |
77 | g=padNum(g,g,2); |
78 | var b=fRandomBy(under,over).toString(16); |
79 | b=padNum(b,b,2); |
80 | //defaultStatus=r+' '+g+' '+b |
81 | return '#' +r+g+b; |
82 | function fRandomBy(under,over){ |
83 | switch (arguments.length){ |
84 | case 1: return parseInt(Math.random()*under+1); |
85 | case 2: return parseInt(Math.random()*(over-under+1) + under); |
86 | default : return 0; |
87 | } |
88 | } |
89 | function padNum(str,num,len){ |
90 | var temp= '' |
91 | for ( var i=0; i<len;temp+=num,i++); |
92 | return temp=(temp+=str).substr(temp.length-len); |
93 | } |
94 | } |
95 | } |
96 | //--------end function fHl(o,flag,rndColor,url)--------------------// |
97 | //]]> |
98 | </script> |
然后在页面最后调用fHl方法,对指定区域指定文字高亮着色,例如:
1 | <script type= "text/javascript" > |
2 | fHl(document.body, '高亮' ); //对页面body的区域中的“高亮”文字背景着色 |
3 | </script> |
相关文章推荐
- JavaScript搜索关键字高亮的实现
- 简单JavaScript语句实现搜索关键字高亮功能
- JavaScript简单实现关键字文本搜索高亮显示功能示例
- JavaScript正则方法replace实现搜索关键字高亮显示
- javascript 关键字高亮显示实现代码
- Android学习------运用 Filter 实现关键字搜索,并且高亮显示关键字
- ASP.NET使用正则表达式实现搜索关键字高亮显示
- 实现在搜索后将结果中的关键字高亮显示
- javascript 关键字高亮显示实现代码
- 在 Angular 中实现搜索关键字高亮
- JS将搜索的关键字高亮显示实现代码
- 实现搜索关键字高亮的效果
- 用JS将搜索的关键字高亮显示实现代码
- 使用正则表达式实现搜索关键字高亮显示
- 如何实现IOS_SearchBar搜索栏及关键字高亮
- 在 Angular 中实现搜索关键字高亮示例
- JavaScript实现关键字高亮功能
- Javascript 高亮显示搜索到的关键字
- 使用正则表达式实现搜索关键字高亮显示
- Angularjs实现搜索关键字高亮显示效果