JavaScript实现关键字高亮功能


Posted in Javascript onNovember 12, 2014

高亮功能主要是指对页面中指定区域的指定文字进行高亮显示,也就是背景着色。一般在搜索结果页面会经常用到这个功能。

下面就为大家提供一种解决方案,用javascript实现。

首先在<head>中引入下面javascript方法:

<script type="text/javascript">

//<![CDATA[ 

    //--------begin function fHl(o, flag, rndColor, url)------------------// 

    function fHl(o, flag, rndColor, url){ 

        /// <summary>

        ///     使用 javascript HTML DOM 高亮显示页面特定字词.

        ///     实例:

        ///         fHl(document.body, '纸伞|她'); 

        ///         这里的body是指高亮body里面的内容。

        ///         fHl(document.body, '希望|愁怨', false, '/'); 

        ///         fHl(document.getElementById('at_main'), '独自|飘过|悠长', true, 'search.asp?keyword='); 

        ///         这里的'at_main'是指高亮id='at_main'的div里面的内容。search.asp?keyword=指给关键字加的链接地址,

        ///         我这里加了一个参数,在后面要用到。可以是任意的地址。        

        /// </summary>

        /// <param name="o" type="Object">

        ///     对象, 要进行高亮显示的对象. 

        /// </param>

        /// <param name="flag" type="String">

        ///     字符串, 要进行高亮的词或多个词, 使用 竖杠(|) 分隔多个词 . 

        /// </param>

        /// <param name="rndColor" type="Boolean">

        ///     布尔值, 是否随机显示文字背景色与文字颜色, true 表示随机显示. 

        /// </param>

        /// <param name="url" type="String">

        ///     URI, 是否对高亮的词添加链接.

        /// </param>                        

        /// <return></return>

        var bgCor=fgCor=''; 

        if(rndColor){ 

            bgCor=fRndCor(10, 20); 

            fgCor=fRndCor(230, 255); 

        } else { 

            bgCor='#F0F'; 

            fgCor='black'; 

        } 

        var re=new RegExp(flag, 'i'); 

        for(var i=0; i<o.childNodes.length; i++){     

            var o_=o.childNodes[i]; 

            var o_p=o_.parentNode; 

            if(o_.nodeType==1) { 

                fHl(o_, flag, rndColor, url);                 

             } else if (o_.nodeType==3) { 

                if(!(o_p.nodeName=='A')){ 

                    if(o_.data.search(re)==-1)continue; 

                    var temp=fEleA(o_.data, flag); 

                    o_p.replaceChild(temp, o_); 

                } 

            }

        } 

        //------------------------------------------------ 

        function fEleA(text, flag){ 

            var style=' style="background-color:'+bgCor+';color:'+fgCor+';" ' 

            var o=document.createElement('span'); 

            var str=''; 

            var re=new RegExp('('+flag+')', 'gi'); 

            if(url){ 

                str=text.replace(re, '<a href="'+url+ 

                '$1"'+style+'>$1</a>'); //这里是给关键字加链接,红色的$1是指上面链接地址后的具体参数。

            } else { 

                str=text.replace(re, '<span '+style+'>$1</span>'); //不加链接时显示

            } 

            o.innerHTML=str; 

            return o; 

        } 

        //------------------------------------------------ 

        function fRndCor(under, over){ 

            if(arguments.length==1){ 

                var over=under; 

                    under=0; 

            }else if(arguments.length==0){ 

                var under=0; 

                var over=255; 

            } 

            var r=fRandomBy(under, over).toString(16); 

                r=padNum(r, r, 2); 

            var g=fRandomBy(under, over).toString(16); 

                g=padNum(g, g, 2); 

            var b=fRandomBy(under, over).toString(16); 

                b=padNum(b, b, 2); 

                //defaultStatus=r+' '+g+' '+b 

            return '#'+r+g+b; 

            function fRandomBy(under, over){ 

                switch(arguments.length){ 

                    case 1: return parseInt(Math.random()*under+1); 

                    case 2: return parseInt(Math.random()*(over-under+1) + under); 

                    default: return 0; 

                } 

            }

            function padNum(str, num, len){ 

                var temp='' 

                for(var i=0; i<len;temp+=num, i++); 

                return temp=(temp+=str).substr(temp.length-len); 

            } 

        } 

    }

    //--------end function fHl(o, flag, rndColor, url)--------------------// 

//]]> 

</script>

上面的fHl方法就是用来实现高亮的,参数的含义在注释中有写。

然后在页面最后调用fHl方法,对指定区域指定文字高亮着色,例如:

<script type="text/javascript">

fHl(document.body, '高亮');   //对页面body的区域中的“高亮”文字背景着色

</script>

怎么样,很简单吧~

Javascript 相关文章推荐
Javascript 跨域访问解决方案
Feb 14 Javascript
原生JavaScript实现连连看游戏(附源码)
Nov 05 Javascript
node.js中的fs.appendFile方法使用说明
Dec 17 Javascript
javascript实现类似百度分享功能的方法
Jul 27 Javascript
javascript如何操作HTML下拉列表标签
Aug 20 Javascript
jquery实现右侧栏菜单选择操作
Mar 04 Javascript
非常漂亮的相册集 使用jquery制作相册集
Apr 28 Javascript
jQuery展示表格点击变色、全选、删除
Jan 05 Javascript
JS获取字符对应的ASCII码实例
Sep 10 Javascript
echarts饼图扇区添加点击事件的实例
Oct 16 Javascript
LayUi使用switch开关,动态的去控制它是否被启用的方法
Sep 21 Javascript
Vue实现简单计算器案例
Feb 25 Javascript
javascript的函数作用域
Nov 12 #Javascript
浅析javascript的间隔调用和延时调用
Nov 12 #Javascript
jQuery的deferred对象详解
Nov 12 #Javascript
探寻Javascript执行效率问题
Nov 12 #Javascript
推荐8款jQuery轻量级树形Tree插件
Nov 12 #Javascript
推荐10个2014年最佳的jQuery视频插件
Nov 12 #Javascript
JavaScript中提前声明变量或函数例子
Nov 12 #Javascript
You might like
支持oicq头像的留言簿(二)
2006/10/09 PHP
PHP STRING 陷阱原理说明
2010/07/24 PHP
php学习笔记 数组遍历实现代码
2011/06/09 PHP
PHP爆绝对路径方法收集整理
2012/09/17 PHP
php的ajax简单实例
2014/02/27 PHP
Joomla调用系统自带编辑器的实现方法
2016/05/05 PHP
PHP基于接口技术实现简单的多态应用完整实例
2017/04/26 PHP
PHP创建自己的Composer包方法
2018/04/09 PHP
阻止子元素继承父元素事件具体思路及实现
2013/05/02 Javascript
用JS动态设置CSS样式常见方法小结(推荐)
2016/11/10 Javascript
js实现带进度条提示的多视频上传功能
2020/12/13 Javascript
基于jquery实现五星好评
2017/11/18 jQuery
使用nodejs+express实现简单的文件上传功能
2017/12/27 NodeJs
jQuery属性选择器用法实例分析
2019/06/28 jQuery
Layui数据表格跳转到指定页的实现方法
2019/09/05 Javascript
[01:17:12]职来职往完美电竞专场
2014/09/18 DOTA
[01:10]DOTA2 Supermajor:英雄,由我们见证
2018/05/14 DOTA
Python中利用sqrt()方法进行平方根计算的教程
2015/05/15 Python
Python的Django框架中的数据过滤功能
2015/07/17 Python
详解在Python的Django框架中创建模板库的方法
2015/07/20 Python
解决pyqt中ui编译成窗体.py中文乱码的问题
2016/12/23 Python
Python学习入门之区块链详解
2017/07/25 Python
python利用rsa库做公钥解密的方法教程
2017/12/10 Python
用python实现对比两张图片的不同
2018/02/05 Python
Python使用Selenium模块模拟浏览器抓取斗鱼直播间信息示例
2018/07/18 Python
Python2 Selenium元素定位的实现(8种)
2019/02/25 Python
瑞典Happy Socks美国官网:购买色彩斑斓的快乐袜子
2016/10/19 全球购物
党员批评与自我批评
2014/02/12 职场文书
三分钟演讲稿范文
2014/04/24 职场文书
幼儿园安全责任书范本
2014/07/24 职场文书
个人授权委托书
2014/09/15 职场文书
领导干部群众路线剖析材料
2014/10/09 职场文书
公司市场部岗位职责
2015/04/15 职场文书
小学少先队工作总结2015
2015/05/26 职场文书
2016国培研修心得体会
2016/01/08 职场文书
MySQL 开窗函数
2022/02/15 MySQL