高亮功能主要是指对页面中指定区域的指定文字进行高亮显示,也就是背景着色。一般在搜索结果页面会经常用到这个功能。
下面就为大家提供一种解决方案,用javascript实现。
首先在<head>中引入下面javascript方法:
01 |
<script type= "text/javascript" >
|
03 |
//--------begin function fHl(o, flag, rndColor, url)------------------//
|
04 |
function fHl(o, flag, rndColor, url){
|
06 |
/// 使用 javascript HTML DOM 高亮显示页面特定字词.
|
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 |
/// 我这里加了一个参数,在后面要用到。可以是任意的地址。
|
15 |
/// <param name="o" type="Object">
|
18 |
/// <param name="flag" type="String">
|
19 |
/// 字符串, 要进行高亮的词或多个词, 使用 竖杠(|) 分隔多个词 .
|
21 |
/// <param name="rndColor" type="Boolean">
|
22 |
/// 布尔值, 是否随机显示文字背景色与文字颜色, true 表示随机显示.
|
24 |
/// <param name="url" type="String">
|
30 |
bgCor=fRndCor(10, 20);
|
31 |
fgCor=fRndCor(230, 255);
|
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;
|
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_);
|
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' );
|
55 |
var re= new RegExp( '(' +flag+ ')' , 'gi' );
|
57 |
str=text.replace(re, '<a href="' +url+
|
58 |
'$1"' +style+ '>$1</a>' ); //这里是给关键字加链接,红色的$1是指上面链接地址后的具体参数。
|
60 |
str=text.replace(re, '<span ' +style+ '>$1</span>' ); //不加链接时显示
|
65 |
//------------------------------------------------
|
66 |
function fRndCor(under, over){
|
67 |
if (arguments.length==1){
|
70 |
} else if (arguments.length==0){
|
74 |
var r=fRandomBy(under, over).toString(16);
|
76 |
var g=fRandomBy(under, over).toString(16);
|
78 |
var b=fRandomBy(under, over).toString(16);
|
80 |
//defaultStatus=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);
|
89 |
function padNum(str, num, len){
|
91 |
for ( var i=0; i<len;temp+=num, i++);
|
92 |
return temp=(temp+=str).substr(temp.length-len);
|
96 |
//--------end function fHl(o, flag, rndColor, url)--------------------//
|
上面的fHl方法就是用来实现高亮的,参数的含义在注释中有写。
然后在页面最后调用fHl方法,对指定区域指定文字高亮着色,例如:
1 |
<script type= "text/javascript" >
|
2 |
fHl(document.body, '高亮' ); //对页面body的区域中的“高亮”文字背景着色
|