给你推荐通过jquery来实现高亮关键词。jquery.textSearch-1.0.js代码:

  1. (function($){
  2. $.fn.textSearch =function(str,options){
  3. var defaults ={
  4. divFlag:true,
  5. divStr:" ",
  6. markClass:"",
  7. markColor:"red",
  8. nullReport:true,
  9. callback:function(){
  10. returnfalse;
  11. }
  12. };
  13. var sets = $.extend({}, defaults, options ||{}), clStr;
  14. if(sets.markClass){
  15. clStr ="class='"+sets.markClass+"'";
  16. }else{
  17. clStr ="style='color:"+sets.markColor+";'";
  18. }
  19. //对前一次高亮处理的文字还原
  20. $("span[rel='mark']").removeAttr("class").removeAttr("style").removeAttr("rel");
  21. //字符串正则表达式关键字转化
  22. $.regTrim =function(s){
  23. var imp =/[\^\.\\\|\(\)\*\+\-\$\[\]\?]/g;
  24. var imp_c ={};
  25. imp_c["^"]="\\^";
  26. imp_c["."]="\\.";
  27. imp_c["\\"]="\\\\";
  28. imp_c["|"]="\\|";
  29. imp_c["("]="\\(";
  30. imp_c[")"]="\\)";
  31. imp_c["*"]="\\*";
  32. imp_c["+"]="\\+";
  33. imp_c["-"]="\\-";
  34. imp_c["$"]="\$";
  35. imp_c["["]="\\[";
  36. imp_c["]"]="\\]";
  37. imp_c["?"]="\\?";
  38. s = s.replace(imp,function(o){
  39. return imp_c[o];
  40. });
  41. return s;
  42. };
  43. $(this).each(function(){
  44. var t = $(this);
  45. str = $.trim(str);
  46. if(str ===""){
  47. alert("关键字为空");
  48. returnfalse;
  49. }else{
  50. //将关键字push到数组之中
  51. var arr =[];
  52. if(sets.divFlag){
  53. arr = str.split(sets.divStr);
  54. }else{
  55. arr.push(str);
  56. }
  57. }
  58. var v_html = t.html();
  59. //删除注释
  60. v_html = v_html.replace(/<!--(?:.*)\-->/g,"");
  61. //将HTML代码支离为HTML片段和文字片段,其中文字片段用于正则替换处理,而HTML片段置之不理
  62. var tags =/[^<>]+|<(\/?)([A-Za-z]+)([^<>]*)>/g;
  63. var a = v_html.match(tags), test =0;
  64. $.each(a,function(i, c){
  65. if(!/<(?:.|\s)*?>/.test(c)){//非标签
  66. //开始执行替换
  67. $.each(arr,function(index, con){
  68. if(con ===""){return;}
  69. var reg =newRegExp($.regTrim(con),"g");
  70. if(reg.test(c)){
  71. //正则替换
  72. c = c.replace(reg,"♂"+con+"♀");
  73. test =1;
  74. }
  75. });
  76. c = c.replace(/♂/g,"<span rel='mark' "+clStr+">").replace(/♀/g,"</span>");
  77. a[i]= c;
  78. }
  79. });
  80. //将支离数组重新组成字符串
  81. var new_html = a.join("");
  82. $(this).html(new_html);
  83. if(test ===0&& sets.nullReport){
  84. alert("没有搜索结果");
  85. returnfalse;
  86. }
  87. //执行回调函数
  88. sets.callback();
  89. });
  90. };
  91. })(jQuery);

使用方法是textSearch,具体为:$(选择器). textSearch(String,可选参数)。例如,

  1. $("body").textSearch("世界杯");
 

表示的含义就是查询并红色高亮标注body标签下的所有的“世界杯”这个关键字,也就是页面下高亮标注所有的“世界杯”文字。又如:

  1. $(".test").textSearch("空姐 凤姐 芙蓉姐",{markColor:"blue"});

则表示class中有test样式的所有标签下的“空姐”,“凤姐”,“芙蓉姐”文字用蓝色高亮标注。

我使用的过程为:(需要同时引入下面两个js文件才能正常运行)

<script type="text/javascript" src="jquery-2.0.0.js"></script>
<script type="text/javascript" src="jquery.textSearch-1.0.js"></script>
<script type="text/javascript">
$(function(){
var v = $("#txtSearchKeyword").val();   //获取id为txtSearchKeyword的text值赋给v  也可以使用request传递的参数:var v = "<%=q1%>";
$("#searchTextTest").textSearch(v);     //将id为searchTextTest的文本中包含v的高亮显示
return false;
});

</script>

详细用法请参考:http://www.zhangxinxu.com/wordpress/?p=888

如何通过js使搜索关键词高亮的更多相关文章

  1. 微信小程序--搜索关键词高亮

    代码地址如下:http://www.demodashi.com/demo/14249.html 一.前期准备工作 软件环境:微信开发者工具 官方下载地址:https://mp.weixin.qq.co ...

  2. 微信小程序实现搜索关键词高亮

    目录 1,前言 2,思路 3,代码逻辑 1,前言 项目中碰到一个需求,搜索数据并且关键词要高亮显示,接到需求,马上开干.先上效果图.源码已经做成了小程序代码片段,放入了GitHub了,文章底部有源码链 ...

  3. 和我一起打造个简单搜索之SpringDataElasticSearch关键词高亮

    前面几篇文章详细讲解了 ElasticSearch 的搭建以及使用 SpringDataElasticSearch 来完成搜索查询,但是搜索一般都会有搜索关键字高亮的功能,今天我们把它给加上. 系列文 ...

  4. js 获取百度搜索关键词的代码

    有可能有时候我们会用到在百度搜什么关键词进来我们的网站的,所有我们又想拿到用户搜索的关键词. 这是我研究了半天所得出的办法.话不多说直接贴代码 <script> function quer ...

  5. 从零搭建 ES 搜索服务(五)搜索结果高亮

    一.前言 在实际使用中搜索结果中的关键词前端通常会以特殊形式展示,比如标记为红色使人一目了然.我们可以通过 ES 提供的高亮功能实现此效果. 二.代码实现 前文查询是通过一个继承 Elasticsea ...

  6. 在 Angular 中实现搜索关键字高亮

    在 Angular 中,我们不应该试图直接修改 DOM 的内容,当需要更新 DOM 内容的时候,应该修改的其实是我们的数据模型,也就是 $scope 中的数据,Angular 会帮助我们将修改之后的数 ...

  7. Django Haystack 全文检索与关键词高亮

    Django Haystack 简介 django-haystack 是一个专门提供搜索功能的 django 第三方应用,它支持 Solr.Elasticsearch.Whoosh.Xapian 等多 ...

  8. jQuery的搜索关键词自动匹配插件

    相信许多人都会用过搜索栏自动匹配关键词的功能,无论是像google的专业搜索引擎,还是普通的网站,现在许多都用上了这种关键词匹配技术,本文介绍的用jQuery实现的关键词匹配技术,当然要整合到自己的系 ...

  9. jQuery实现页面关键词高亮

    示例代码,关键位置做了注释,请查看代码: <html> <head> <title>jQuery实现页面关键词高亮</title> <style ...

随机推荐

  1. iOS-SQLite数据库使用介绍

    iOS-SQLite数据库使用介绍 SQLite是MySQL的简化版,更多的运用与移动设备或小型设备上.SQLite的优点是具有可移植性,它不需要服务器就能运行,同时,它也存在一些缺陷,首先,没有提供 ...

  2. flexbox 兼容安卓4.3

                 border:1px solid red;              overflow: hidden;                           font-siz ...

  3. Android with Eclipse - Waiting for HOME ('android.process.acore') to be launched?

    mac机中使用命令行方式启动android sdk manager,有需要的朋友可以参考下. 相信使用mac机的用户做android开发都会有一个困惑,就是如何更新android sdk,或者说直接使 ...

  4. C#教程之打印和打印预览

    最近研究一了一下关于PDF打印和打印预览的功能,在此小小的总结记录一下学习过程. 实现打印和打印预览的方法,一般要实现如下的菜单项:打印.打印预览.页面设置. PrintDocument类 Print ...

  5. MySQL存储过程详解 mysql 存储过程

    原文地址:MySQL存储过程详解  mysql 存储过程作者:王者佳暮 mysql存储过程详解 1.     存储过程简介 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储 ...

  6. Android Studio美化之优雅的logcat

    博客: 安卓之家 微博: 追风917 CSDN: 蒋朋的家 简书: 追风917 博客园: 追风917 先来个图,图样吐sexy: 很简单,跟我走吧,两步: 1. 引入Logger库 首先,这个sexy ...

  7. SQL使用存儲過程訪問不同服務器

    用openrowset连接远程SQL或插入数据 --如果只是临时访问,可以直接用openrowset --查询示例 select * from openrowset('SQLOLEDB', 'sql服 ...

  8. 逻辑回归:使用SGD(Stochastic Gradient Descent)进行大规模机器学习

    Mahout学习算法训练模型 mahout提供了许多分类算法,但许多被设计来处理非常大的数据集,因此可能会有点麻烦.另一方面,有些很容易上手,因为,虽然依然可扩展性,它们具有低开销小的数据集.这样一个 ...

  9. [lua]再版jobSchedule与脚本描述范型

    首先贴上代码 -- CPM:关键路径法(Critical Path Method) jobSchedule = { todos = { -- todo list ... ["finale&q ...

  10. Linux 中查看网口流量的利器 -- sar

    Linux 中查看网口流量的利器 -- sar   有这么一个小工具,通过它能够查看各个网口的IP报文流量统计. 利用sar命令,加上-n DEV参数,即可统计出所有网卡上的流量,在显示的第五和第六列 ...