当前位置:首页 > 日记 > 正文

Angularjs实现搜索关键字高亮显示效果

Angularjs实现搜索关键字高亮显示效果

需求分析:

根据关键字搜索网页内容,并且高亮显示内容中的关键字

细节分析:

 1、每次执行搜索操作,需清空上一次结果

 2、需区分html标签和正常文本内容,否则为关键字添加样式以后会出现标签内容被显示的情况

代码思路:

利用正则表达式匹配关键字

使用javascript字符串替换的方式,将关键字替换成<span class='red'>关键字</span>

为了避免出现当关键字为 'p' 时候,将标签<p>替换成<<span>p</span>>……等等的情况

所有匹配和替换操作只针对当前DOM元素中文本节点,通过递归函数遍历操作所有节点

前端框架:

angularjs^1.2.9

$scope.myData = '<div>woshihight<h2>womei<b>bbb</b>shihigh<span>haha</span></h2><span>1000pxhight</span><ul><li>1high</li><li>2hight span light hight< p></li></ul><a href="index.html">这个是链接地址hight</a></div>'; $scope.myDataCp = angular.copy($scope.myData); $scope.key = ''; $scope.searchKey = function() { if($scope.key != '') { searchHighLight($scope.key); } } function searchHighLight(key) { var _element = angular.element($scope.myDataCp); nodeRecursion(_element[0],key); var _htmlStr = _element[0].innerHTML.toString(); _htmlStr = _htmlStr.replace(/_1000px_/g, '<span class="red">').replace(/_xp0001_/g, '</span>'); $scope.myData = _htmlStr; } //循环遍历替换所有文本节点内容 function nodeRecursion(e, key) { var reg = new RegExp(key, 'g'); var _count = e.childNodes.length; for(var _i=0; _i < _count; _i++) { if(e.childNodes.item(_i).nodeType == 3) { var _str = e.childNodes.item(_i).data; if(_str.indexOf(key)!=-1) { _str = _str.replace(reg,'_1000px_'+key+'_xp0001_'); } e.childNodes.item(_i).data = _str; } else { nodeRecursion(e.childNodes.item(_i), key); } } }

其他说明:

searchKey //点击搜索按钮调用该方法

$scope.myData 中的html字符串必须有一个根节点,比如这里的div

html页面中加载该html字段需要ng-bind-html指令,该指令需要加载ngSanitize模块

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!

相关文章

在word2013中插入稿纸的方法步骤

在word2013中插入稿纸的方法步骤

方法,步骤,稿纸,方格,电脑软件,  编辑word文档时,有时需要插入半页稿纸,尤其是写作文时,前面写完作文要求之后,就需要在本页插入稿纸。那么怎么在word2013中插入稿纸呢?为此小编给你准备了插入稿纸的方法教程,希望对你有帮助!Word2013插入稿纸…

PHP实现的贪婪算法实例

PHP实现的贪婪算法实例

贪婪算法,实例,电脑软件,PHP,本文实例讲述了PHP实现的贪婪算法。分享给大家供大家参考,具体如下:背景介绍:贪婪算法与数据结构知识库算法可以说是离我们生活最近的一种算法,人总是贪婪的嘛,所以这种算法的设计是很符合人性的。之所以这么说,是因…

ps怎么选纸张颜色? ps模拟纸张颜色

ps怎么选纸张颜色? ps模拟纸张颜色

方法,模拟,纸张,颜色,电脑软件,ps模拟纸张颜色很方便,可以直接选择文件的样式里的模拟纸张颜色的选项,下面我们就来看看详细的教程。软件名称:Adobe Photoshop 8.0 中文完整绿色破解版软件大小:150.1MB更新时间:2015-11-041、首先找到软件。2、…

ps利用滤镜制作各种颜色的环形烟花

ps利用滤镜制作各种颜色的环形烟花

滤镜,教程,笔画,烟花,环形,ps怎样利用滤镜制作各种颜色的环形烟花图片?运用PHOTOSHOP软件,可以很简单的制作大家想要的照片,下面和小编一起来看看具体步骤吧。最终效果:具体步骤:12 3 4 阅读全文1 23 4 阅读全文1 2 34 阅读全文教程到此结束…

Node.js 的模块知识汇总

Node.js 的模块知识汇总

知识,模块,电脑软件,Node,js,在写 Node.js 应用程序的时候,你确实可以把所有代码放在巨大原 index.js 文件中,不在乎你的应用程序会变得多大多复杂。Node.js 解释器不会在意这个事情。但在代码组织方面,你很快就会陷入混乱,不能理解代码,而且难…

word怎么设置论文页面标准格式

word怎么设置论文页面标准格式

方法,页面设置,设置,论文,页面,  毕业论文,总是让人很头疼的。尤其是老师给的各种格式。现在,根据小编的经验,来给大家一点在毕业论文页面设置方面的小经验,为大家减轻一点那些格式要求烦恼。接下来小编举例简单的例子告诉大家word2010论文页…

ps怎么给添加动感效果?

ps怎么给添加动感效果?

动感,效果,电脑软件,ps,ps 大家应该都会想到P图,PS其实功能很强大,现在分享一个pS做简单动图的例子,勿喷!!!!新手。软件名称:Adobe Photoshop 8.0 中文完整绿色破解版软件大小:150.1MB更新时间:2015-11-041、打开PS-标题栏-文件-新建 (热键CTRL+N),修改…

TCP关闭问题详细介绍

TCP关闭问题详细介绍

详细介绍,电脑软件,TCP,摘要: 三次握手,四次挥手意思是tcp建立连接时需要三次交互来完成,A发起连接A --- SYN --> BA <-- SYN + ACK --- B (1)A --- ACK --> B而关闭tcp连接需要四次交互,A发起关闭A --- FIN --> BA <-- ACK --- B (1)A <-…

如何用Powerpoint制作字幕式片头片

如何用Powerpoint制作字幕式片头片

字幕,片头,片尾,如何用,电脑软件,  电影和电视剧中,制作者们喜欢挑选片中精彩镜头放在片头,在屏幕上拉动出现。片尾则通常用移动字幕的形式给出演员、制作者等的姓名及相关资料。以下是小编为您带来的关于用Powerpoint制作字幕式片头片尾,希…

webpack2.0配置postcss-loader的方

webpack2.0配置postcss-loader的方

方法,配置,电脑软件,loader,postcss,本文介绍使用webpack2.0配置postcssloader,分享给大家。具体如下:安装postcss-loadernpm install --save-dev postcss-loader然后配置webpack.config.js{ test:/\.css$/, use:[ 'style-loader','css-…

input type=file 选择并且实现预览

input type=file 选择并且实现预览

选择,实例,效果,电脑软件,input,通过<input />标签,给它指定type类型为file,可提供文件上传;accept:可选择上传类型,如:只要传图片,且不限制图片格式,为image/*;multiple:规定是否可以选择多个文件;规定只可上传图片,且可以选择多个文件<input type="f…

关于Ajax中通过response在后台传递

关于Ajax中通过response在后台传递

传递数据,后台,电脑软件,Ajax,response,这是js代码:var System = { getHttpRequest: function(url, callback, options) { if (url.length < 0) return; var option = { url: url, type: "get", dataType: "…