高亮功能主要是指对页面中指定区域的指定文字进行高亮显示,也就是背景着色。一般在搜索结果页面会经常用到这个功能。 下面就为大家提供一种解决方案,用javascript实现。 首先在中引入下面javascript方法: 复制代码 代码如下: <br> //<![CDATA[ <br /> //--------begin function fHl(o, flag, rndColor, url)------------------// <br /> function fHl(o, flag, rndColor, url){ <br /> /// <summary><br> /// 使用 javascript HTML DOM 高亮显示页面特定字词.<br> /// 实例:<br> /// fHl(document.body, '纸伞|她'); <br> /// 这里的body是指高亮body里面的内容。<br> /// fHl(document.body, '希望|愁怨', false, '/'); <br> /// fHl(document.getElementById('at_main'), '独自|飘过|悠长', true, 'search.asp?keyword='); <br> /// 这里的'at_main'是指高亮id='at_main'的div里面的内容。search.asp?keyword=指给关键字加的链接地址,<br> /// 我这里加了一个参数,在后面要用到。可以是任意的地址。 <br> /// </summary><br> /// <param name="o" type="Object"><br> /// 对象, 要进行高亮显示的对象. <br> /// </param><br> /// <param name="flag" type="String"><br> /// 字符串, 要进行高亮的词或多个词, 使用 竖杠(|) 分隔多个词 . <br> /// </param><br> /// <param name="rndColor" type="Boolean"><br> /// 布尔值, 是否随机显示文字背景色与文字颜色, true 表示随机显示. <br> /// </param><br> /// <param name="url" type="String"><br> /// URI, 是否对高亮的词添加链接.<br> /// </param> <br> /// <return></return><br> var bgCor=fgCor=''; <br> if(rndColor){ <br> bgCor=fRndCor(10, 20); <br> fgCor=fRndCor(230, 255); <br> } else { <br> bgCor='#F0F'; <br> fgCor='black'; <br> } <br> var re=new RegExp(flag, 'i'); <br> for(var i=0; i<o.childNodes.length; i ){ <br /> var o_=o.childNodes[i]; <br /> var o_p=o_.parentNode; <br /> if(o_.nodeType==1) { <br /> fHl(o_, flag, rndColor, url); <br /> } else if (o_.nodeType==3) { <br /> if(!(o_p.nodeName=='A')){ <br /> if(o_.data.search(re)==-1)continue; <br /> var temp=fEleA(o_.data, flag); <br /> o_p.replaceChild(temp, o_); <br /> } <br /> }<br /> } <br /> //------------------------------------------------ <br /> function fEleA(text, flag){ <br /> var style=' style="background-color:' bgCor ';color:' fgCor ';" ' <br /> var o=document.createElement('span'); <br /> var str=''; <br /> var re=new RegExp('(' flag ')', 'gi'); <br /> if(url){ <br /> str=text.replace(re, '<a href="' url <br /> '$1"' style '>$1</a>'); //这里是给关键字加链接,红色的$1是指上面链接地址后的具体参数。<br> } else { <br> str=text.replace(re, '<span ' style '>$1</span>'); //不加链接时显示<br> } <br> o.innerHTML=str; <br> return o; <br> } <br> //------------------------------------------------ <br> function fRndCor(under, over){ <br> if(arguments.length==1){ <br> var over=under; <br> under=0; <br> }else if(arguments.length==0){ <br> var under=0; <br> var over=255; <br> } <br> var r=fRandomBy(under, over).toString(16); <br> r=padNum(r, r, 2); <br> var g=fRandomBy(under, over).toString(16); <br> g=padNum(g, g, 2); <br> var b=fRandomBy(under, over).toString(16); <br> b=padNum(b, b, 2); <br> //defaultStatus=r ' ' g ' ' b <br> return '#' r g b; <br> function fRandomBy(under, over){ <br> switch(arguments.length){ <br> case 1: return parseInt(Math.random()*under 1); <br> case 2: return parseInt(Math.random()*(over-under 1) under); <br> default: return 0; <br> } <br> }<br> function padNum(str, num, len){ <br> var temp='' <br> for(var i=0; i<len;temp =num, i ); <br /> return temp=(temp =str).substr(temp.length-len); <br /> } <br /> } <br /> }<br /> //--------end function fHl(o, flag, rndColor, url)--------------------// <br /> //]]> <br> 上面的fHl方法就是用来实现高亮的,参数的含义在注释中有写。 然后在页面最后调用fHl方法,对指定区域指定文字高亮着色,例如: 复制代码 代码如下: <br> fHl(document.body, '高亮'); //对页面body的区域中的“高亮”文字背景着色<br> 怎么样,很简单吧~