在html页面上,有时候会遇到一些检索高亮显示的问题,具体用js是实现的方式,代码展示。

Jsp页面设置方式

<li class="pull-left" id="search_box">
    <input type="text"  id="searchstr" name="searchstr"   placeholder="请输入要查找的内容">
 <%--   <input
class="textbox" id="searchstr" type="text"
size="10" name="searchstr" />
 --%>
   <%-- <input
class="sbttn" id="search_btn" type="button"
value="页内查找" />--%>
   
<button   id="search_btn" type="button" >搜索</button></li>

CSS样式控制

<link rel="stylesheet" type="text/css" href="../css/main.css" />
<style type="text/css">
    .demo{width:800px; margin:40px auto 0 auto; min-height:250px; font-size:14px}
    .demo p{line-height:22px}
    .demo p strong{color:#f30}
    .highlight { background: yellow;  }
    .prelight { background: blue; color: white; }
    #tip { background: #FFFFCC; border: 1px solid #999; width: 200px; text-align: center; display: none; font-size: 12px; }
    #search_box text-align:right }
    #search_btn { background-color:#0a64ad; border: 0px; color: white;margin-left:-5px; }
    #searchstr { font-size: 14px; height: 30px; }
</style>

js实现

  1.  <script type="text/javascript" src="../js/jquery.js"></script>
  2.     <script type="text/javascript">
  3.         (function($) {
  4.             $.fn.fixDiv = function(options) {
  5.                 var defaultVal = {
  6.                     top: 10
  7.                 };
  8.                 var obj = $.extend(defaultVal, options);
  9.                 $this = this;
  10.                 var _top = $this.offset().top;
  11.                 var _left = $this.offset().left;
  12.                 $(window).scroll(function() {
  13.                     var _currentTop = $this.offset().top;
  14.                     var _scrollTop = $(document).scrollTop();
  15.                     if (_scrollTop > _top) {
  16.                         $this.offset({
  17.                             top: _scrollTop + obj.top,
  18.                             left: _left
  19.                         });
  20.                     } else {
  21.                         $this.offset({
  22.                             top: _top,
  23.                             left: _left
  24.                         });
  25.                     }
  26.                 });
  27.                 return $this;
  28.             };
  29.         })(jQuery);
  30.         $(function(){
  31.             $("#search_box").fixDiv({ top: 0 });
  32.             $('#search_btn').click(highlight);//点击search时,执行highlight函数;
  33.             $('#searchstr').keydown(function (e) {
  34.                 var key = e.which;
  35.                 if (key == 13) highlight();
  36.             })
  37.  
  38.             var i = 0;
  39.             var sCurText;
  40.             function highlight(){
  41.                 clearSelection();//先清空一下上次高亮显示的内容;
  42.                 var flag = 0;
  43.                 var bStart = true;
  44.  
  45.  
  46.                 $('#tip').text('');
  47.                 $('#tip').hide();
  48.                 var searchText = $('#searchstr').val();
  49.                 var _searchTop = $('#searchstr').offset().top+30;
  50.                 var _searchLeft = $('#searchstr').offset().left;
  51.                 if($.trim(searchText)=="" || $.trim(searchText)=='.'){
  52.                     //alert(123);
  53.                     showTips("请输入查找内容",_searchTop,3,_searchLeft);
  54.                     return;
  55.                 }
  56.  
  57.  
  58.                 var searchText = $('#searchstr').val();//获取你输入的关键字;
  59.                 var regExp = new RegExp(searchText, 'g');//创建正则表达式,g表示全局的,如果不用g,则查找到第一个就不会继续向下查找了;
  60.                 var content = $("#lawcontent").text();
  61.                 if (!regExp.test(content)) {
  62.                     showTips("没有找到要查找的内容",_searchTop,3,_searchLeft);
  63.                     return;
  64.                 } else {
  65.                     if (sCurText != searchText) {
  66.                         i = 0;
  67.                         sCurText = searchText;
  68.                     }
  69.                 }
  70.  
  71.                 $('p').each(function(){
  72.                     var html = $(this).html();
  73.                     var newHtml = html.replace(regExp, '<span class="highlight">'+searchText+'</span>');//将找到的关键字替换,加上highlight属性;
  74.                     $(this).html(newHtml);//更新;
  75.                     flag = 1;
  76.                 });
  77.  
  78.                 if (flag == 1) {
  79.                     if ($(".highlight").size() > 1) {
  80.                         var _top = $(".highlight").eq(i).offset().top+$(".highlight").eq(i).height();
  81.                         var _tip = $(".highlight").eq(i).parent().find("strong").text();
  82.                         if(_tip=="") _tip = $(".highlight").eq(i).parent().parent().find("strong").text();
  83.                         var _left = $(".highlight").eq(i).offset().left;
  84.                         var _tipWidth = $("#tip").width();
  85.                         if (_left > $(document).width() - _tipWidth) {
  86.                             _left = _left - _tipWidth;
  87.                         }
  88.                         $("#tip").html(_tip).show();
  89.                         $("#tip").offset({ top: _top, left: _left });
  90.                         $("#search_btn").val("查找下一个");
  91.                     }else{
  92.                         var _top = $(".highlight").offset().top+$(".highlight").height();
  93.                         var _tip = $(".highlight").parent().find("strong").text();
  94.                         var _left = $(".highlight").offset().left;
  95.                         $('#tip').show();
  96.                         $("#tip").html(_tip).offset({ top: _top, left: _left });
  97.                     }
  98.                     $("html, body").animate({ scrollTop: _top - 50 });
  99.                     i++;
  100.                     if (i > $(".highlight").size() - 1) {
  101.                         i = 0;
  102.                     }
  103.                 }
  104.             }
  105.             function clearSelection(){
  106.                 $('p').each(function(){
  107.                     //找到所有highlight属性的元素;
  108.                     $(this).find('.highlight').each(function(){
  109.                         $(this).replaceWith($(this).html());//将他们的属性去掉;
  110.                     });
  111.                 });
  112.             }
  113.  
  114.             //mask
  115.             var tipsDiv = '<div class="tipsClass"></div>';
  116.             $( 'body' ).append( tipsDiv );
  117.             function showTips( tips, height, time,left ){
  118.                 var windowWidth = document.documentElement.clientWidth;
  119.                 $('.tipsClass').text(tips);
  120.                 $( 'div.tipsClass' ).css({
  121.                     'top' : height + 'px',
  122.                     'left' :left + 'px',
  123.                     'position' : 'absolute',
  124.                     'padding' : '8px 6px',
  125.                     'background': '#000000',
  126.                     'font-size' : 14 + 'px',
  127.                     'font-weight': 900,
  128.                     'margin' : '0 auto',
  129.                     'text-align': 'center',
  130.                     'width' : 'auto',
  131.                     'color' : '#fff',
  132.                     'border-radius':'2px',
  133.                     'opacity' : '0.8' ,
  134.                     'box-shadow':'0px 0px 10px #000',
  135.                     '-moz-box-shadow':'0px 0px 10px #000',
  136.                     '-webkit-box-shadow':'0px 0px 10px #000'
  137.                 }).show();
  138.                 setTimeout( function(){$( 'div.tipsClass' ).fadeOut();}, ( time * 1000 ) );
  139.             }
  140.         })
  141.         /**/
  142.     </script>

js实现在当前页面搜索高亮显示字的方法的更多相关文章

  1. js灵活打印web页面区域内容的通用方法

      我们做网站,经常需要打印页面指定区域的内容,而网上关于这块的说法很多,各种各样的打印控件也不少.但许多打印方案都不怎么好,至少我不喜欢,要么封装复杂,要么难以维护.正好现在的项目也需要用到 ...

  2. jquery和js的几种页面加载函数的方法以及执行顺序

    参考博客:http://www.cnblogs.com/itslives-com/p/4646790.html    https://www.cnblogs.com/james641/p/783837 ...

  3. js中常用framesetiframe页面跳转传参方法实例大全

    logf的空间

  4. IDEA 2018.3.5,修改js文件,html页面不及时更新

    问题描述 使用IDEA 开发时,修改js文件,前端页面不能及时更新. 解决方法: 1. IDEA settings--> Compiler --> Build project automa ...

  5. 原生Js 两种方法实现页面关键字高亮显示

    原生Js 两种方法实现页面关键字高亮显示 上网看了看别人写的,不是兼容问题就是代码繁琐,自己琢磨了一下用两种方法都可以实现,各有利弊. 方法一 依靠正则表达式修改 1.获取obj的html2.统一替换 ...

  6. jquery textSearch实现页面搜索 注意!!!!调用这个插件后,js事件绑定如,on、bind、live delegate全部失效,折腾了我一整天!!!

    今天我们介绍的这个插件来着http://www.zhangxinxu.com/wordpress/,张鑫旭的文章写得挺好的,大家有兴趣的多看看. 我们今天的这个插件叫“jquery.textSearc ...

  7. JS 页面繁简字转换

    // 本js用于客户在网站页面选择繁体中文或简体中文显示,默认是正常显示,即简繁体同时显示// 在用户第一次访问网页时,会自动检测客户端语言进行操作并提示.此功能可关闭// 本程序只在UTF8编码下测 ...

  8. FlexPaper二次开发问题及搜索高亮显示

    原文:FlexPaper二次开发问题及搜索高亮显示 最近有个需求,做一个IT知识库,类似于文库,说到文库肯定会用到在线浏览文档了,所有在网上翻阅了一下类似豆丁的在线浏览器插件的资料,将其进行了二次开发 ...

  9. js/jQuery实现类似百度搜索功能

    一.页面代码:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www. ...

随机推荐

  1. 最好的营销是“调情”

    每一个精彩的营销案例都应该像一个精彩的故事,而故事最精彩的讲述方式就是设置一个开放的结局,把解读和诠释的权利留给读者和观众.宣讲.洗脑式的营销时代已经终结,就像单相思的深情表白永远不如两情相悦的彼此挑 ...

  2. java 修饰符的访问权限

    private,public,protected,默认不写(firendly) 1.Class类的访问权限: public:可以供所有的类访问. 默认:默认可以称为friendly但是,java语言中 ...

  3. Redis 5种主要数据类型和命令

    redis是键值对的数据库,有5中主要数据类型: 字符串类型(string),散列类型(hash),列表类型(list),集合类型(set),有序集合类型(zset) 几个基本的命令: KEYS * ...

  4. xml序列化和反序列化(一)

    最近项目中需要调用第三方webservice,入参和出参采用xml格式,大致如下: 入参: <?xml version="1.0" encoding="utf-8& ...

  5. linux下实时查看tomcat运行日志 2017.12.4

    1.先切换到:cd usr/local/tomcat5/logs 2.tail -f catalina.out 3.这样运行时就可以实时查看运行日志了

  6. win7 telnet命令无法开启的解决方案(不是内部命令或外部命令)

    如果你想在win 7上直接使用 telnet命令,却不能开启那怎么办呢?记得在Wingdows XP上telnet都是已经安装好的,直接就可用,但是Win7是没有这个功能的,都需要后来自己安装的,下面 ...

  7. SimpleXML系列函数操作XML

    创建SimpleXML对象 种方法来创建对象,分别是: l  Simplexml_load_file()函数,将指定的文件解析到内存中. l  Simplexml_load_string()函数,将创 ...

  8. Requests库作者另一神器Pipenv的用法

    前言 我们在运行 Python 项目的时候经常会遇到一些版本问题,例如 A 项目依赖于 Django 1.5,而 B 项目又依赖 Django 2.0,而我们的系统却只有一个 Python 解释器,我 ...

  9. Python 字符串大小写转换

    以下代码演示了如何将字符串转换为大写字母,或者将字符串转为小写字母等: # Filename : test.py # author by : www.runoob.com str = "ww ...

  10. segment.go

    package sego // 文本中的一个分词 type Segment struct {     // 分词在文本中的起始字节位置     start int     // 分词在文本中的结束字节 ...