html查找框功能

html页面的查找功能主要是实现在查找框内输入字符,下面通过本文给大家分享html页面的查找功能,需要的朋友参考下吧

最近在搞一个被很多人改了的框架,天天看代码看的头的晕了,不过感觉进步还挺大的,自己做了一个后台可配置前台查看两个库不同数据范围的东西,还挺满意,那天拿出来分享一下,今天先说一个这几天做的功能,就是html页面的查找功能。

这个功能主要是实现在查找框内输入字符,之后按后面的上一个下一个按钮,会自动把查询区域内的匹配字符用特殊的样式标记,之后可以继续按上一个下一个按钮把按照顺序浏览匹配字符,并把当前匹配的字符用另一种样式与其他匹配字符加以区别。

前台显示大概是这个样子:

html查找框功能

html是这样:

立即学习“前端免费学习笔记(深入)”;

 

script代码:

  //搜索功能        var oldKey0 = "";        var index0 = -1;var oldCount0 = 0;        var newflag = 0;        var currentLength = 0;        function wordSearch(flg) {            var key = $("#key").val(); //取key值            if (!key) {                return; //key为空则退出            }            getArray();            focusNext(flg);        }        function focusNext(flg) {            if (newflag == 0) {//如果新搜索,index清零                index0 = 0;            }            if (!flg) {                if (oldCount0 != 0) {//如果还有搜索                    if (index0 < oldCount0) {//左边如果没走完,走左边                        focusMove(index0);                        index0++;                    } else if (index0 == oldCount0) {//都走完了                        index0 = 0;                        focusMove(index0);                        index0++;                    }                    else {                        index0 = 0;//没确定                        focusMove(index0);                        index0++;                    }                }            } else {                if (oldCount0 != 0) {//如果还有搜索                    if (index0  0) {//左边如果没走完,走左边                        index0--;                        focusMove(index0);                    } else if (index0 == 0) {//都走完了                        index0 = oldCount0;                        index0--                        focusMove(index0);                    }                }            }        }        function getArray() {            newflag = 1;            $(".contrast .result").removeClass("res");            var key = $("#key").val(); //取key值            if (!key) {                oldKey0 = "";                return; //key为空则退出            }            if (oldKey0 != key || $(".current").length != currentLength) {                //重置                index0 = 0;                var index = 0;                $(".contrast .result").each(function () {                    $(this).replaceWith($(this).html());                });                pos0 = new Array();                if ($(".contrast-wrap").hasClass("current")) {                    currentLength = $(".current").length;                    $(".current .contrast").each(function () {                        $(this).html($(this).html().replace(new RegExp(key, "gm"), "" + key + "")); // 替换                    });                } else {                    $(".contrast-wrap").addClass('current');                    currentLength = $(".current").length;                    $(".contrast").each(function () {                        $(this).html($(this).html().replace(new RegExp(key, "gm"), "" + key + "")); // 替换                    });                }                //$("#key").val(key);                oldKey0 = key;                //$(".contrast .result").each(function () {                //    $(this).parents('.contrast-wrap').addClass('current');                //    pos0.push($(this).offset().top);                //});                // pos0.push($(".contrast .result:eq(2)").offset().top - $(".contrast .result:eq(2)").parents(".contrast").offset().top);                oldCount0 = $(".contrast .result").length;                newflag = 0;            }        }        function focusMove(index0) {            $(".contrast .result:eq(" + index0 + ")").parents('.contrast-wrap').addClass('current');            $(".contrast .result:eq(" + index0 + ")").addClass("res");            var top = $(".contrast .result:eq(" + index0 + ")").offset().top + $(".contrast .result:eq(" + index0 + ")").parents(".contrast").scrollTop();            var intop = top - $(".contrast .result:eq(" + index0 + ")").parents(".contrast").offset().top;            $(".contrast .result:eq(" + index0 + ")").parents(".contrast").animate({ scrollTop: intop }, 200);            if ($(".contrast .result:eq(" + index0 + ")").parents(".contrast").scrollTop() == 0) {                $("html, body").animate({ scrollTop: top - 200 }, 200);            } else {                $("html, body").animate({ scrollTop: $(".contrast .result:eq(" + index0 + ")").parents(".contrast").offset().top - 200 }, 200);            }        }        $('#key').change(function () {            if ($('#key').val() == "") {                index0 = 0;                $(".contrast .result").each(function () {                    $(this).replaceWith($(this).html());                });                oldKey0 = "";            }        });    

接下来记一下实现原理:

首先先把上一次的查询结果清除掉,然后根据key的值,用正则表达式把区域内所有匹配的字符全都加上特殊的样式,比如方法中就全部加了一个类名为result的span标签,用odKey0变量记录key的值(下次再进入先比较如果一样的话说明是要看下一个或者上一个的内容,就不用在进入用正则表达式匹配了),oldCount0记录总共查询出来的个数,newflag置0(如果不是初次查询newflag为1)。

接着进入getNext方法,flg表示用户按下的是上一个还是下一个按钮,用index0记录当前查看的是哪一个匹配字符,与oldCount0比较,确定是递增或递减还是置0(如果大于oldCount0或者小于0,就要重新开始)。

focusMove方法就是使页面定位到当前元素的操作。

学到的jquery方法:

eq() 选择器:选择器选取带有指定 index 值的元素。例如:$(".contrast .result:eq(1)"),就是选择类名contrast元素中的第二个类名为result的元素。

parents()方法:元素的所有父元素。$("p").parents('.contrast-wrap'),p元素所有类名为contrast-wrap的元素。

replace()方法:用指定的html内容替换被选元素,注意是把被选元素的元素也替换掉。

offset()方法:返回或设置匹配元素相对于文档的偏移(位置)。

scrollTop()方法:返回或设置匹配元素的滚动条的垂直位置。

总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。

相关推荐:

HTML的列表、表单、语义化使用方法总结

使用HTML5中postMessage知识点解决Ajax中POST跨域问题

Chart.js 轻量级HTML5图表绘制工具库使用步骤详解

以上就是html查找框功能的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1546196.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月21日 17:57:45
下一篇 2025年12月17日 03:24:14

相关推荐

  • HTML中表单组件

    本文通过实例代码给大家介绍了html 表单组件的知识,非常不错,具有参考借鉴价值,需要的朋友参考下吧 HTML 表单用于搜集不同类型的用户输入。 具体代码如下所示: Insert title here 输入名称: 输入密码: 选择性别: 男 女 选择技术: Java html CSS 选择文件: 一…

    好文分享 2025年12月21日
    000
  • 如何在HTML中使用JavaScript

    本篇文章主要介绍如何在html中使用javascript,感兴趣的朋友参考下,希望对大家有所帮助。 标签   在HTML5中script主要有以下几个属性:async,defer,charset,src,type, async(可选):     关键词:异步脚本,外部文件,立即下载; 立即学习“Ja…

    2025年12月21日
    000
  • HTML中表格动态添加的方法

    总结:以上就是本篇文的全部内容html中表格动态添加的方法,希望能对大家的学习有所帮助。 相关推荐: 具体代码如下所示: Table First Name Last Name 张 三 function add() { var trObj = document.createElement(“tr”);…

    2025年12月21日
    000
  • HTML使用表格写首页

    本篇文章主要介绍如何利用表格写网站首页,简单的使用table标签与其子标签实现图片汉字的插入,在此也可以使用嵌套的方式完成。感兴趣的小伙伴参考下。 代码展示 HTML表格练习之大学首页信息 @@##@@ 网站首页 学校概况 教学单位 机构设置 人才培养 学术研究 招生就业 合作交流 校园生活 @@#…

    好文分享 2025年12月21日
    000
  • HTML如何关闭当前网页

    本片文章主要介绍html如何关闭当前网页以及鼠标特效,希望可以帮到大家。 代码: Document function shut(){ window.opener=null; window.open(”,’_self’); window.close(); } 相关推荐: js实现关闭网页的代码 立即…

    好文分享 2025年12月21日
    000
  • HTML入门基础

    本篇文章主要介绍HTML入门基础,感兴趣的朋友参考下,希望对大家有所帮助。 标记、标签、元素 标签和元素通常是描述同样的意思,但是严格来说,一个html元素包含了开始标签和结束标签。 一个标准的HTML页面 <!–可以插入脚本,样式文件(css)以及各种meta信息页面标题 <!–可…

    2025年12月21日 好文分享
    000
  • 用html创建canvas画布生成图片

    本篇文章主要介绍如何用html创建canvas画布生成图片,感兴趣的朋友参考下,希望对大家有所帮助。 1,在html里新建canvas画布 /**要生成图片的html*/ 思路惊奇 思路惊奇 @@##@@ @@##@@/*生成的canvas和最终生成的图片*/ @@##@@ //设置canva画布大…

    好文分享 2025年12月21日
    000
  • html如何布局

    本篇文章主要介绍html如何布局 ,感兴趣的朋友参考下,希望对大家有所帮助。 p布局 body{margin: 0; padding: 0;}#header{width:100%; height: 90px; background: #b19f9d; }#nav{margin: 0 auto; wi…

    好文分享 2025年12月21日
    000
  • HTML进阶知识

    <p class="markdown_views"&gt;</p&gt;<p&gt;本篇文章主要介绍 </div&gt;<h2&gt;<code&gt;</code&gt;元素&lt…

    好文分享 2025年12月21日
    000
  • html怎样自定义标签

    本篇文章主要介绍html怎样自定义标签,感兴趣的朋友参考下,希望对大家有所帮助。 代码如下: 自定义标签 /* 第三步: 自定义标签在设置样式的时候使用 ” 命名空间名\:标签名 ” */ mine\:tag { font-size: .36rem; font-weight: bold; color…

    好文分享 2025年12月21日
    000
  • html标签中lang的作用

    本篇文章主要介绍html标签中lang的作用,感兴趣的朋友参考下,希望对大家有所帮助。 写在html标签中的lang属性作用:声明当前页面的语言类型。 如: //英文 //中文 //日文 //美式英文 注意:lang属性中的语言代码不区分大小写 //英文 //英文 上面的两行代码一样的效果。 另外,…

    好文分享 2025年12月21日
    000
  • 用html中标签制作表单实例

    本篇文章主要介绍用如何用html标签制作表单实例,属于HTML中必须要掌握的知识点之一。感兴趣的朋友参考下,希望对大家有所帮助。表单标签:form表单标签的主要作用是:在HTML页面中创建一个表单,在用户填写完表单信息后,将数据提交给服务器。需要填写数据的标签必须要放在表单标签体里面。常用的属性: …

    2025年12月21日
    000
  • HTML中的超级链接标签

    无标题文档   超链接标签 a标签常用的属性: href  : 用于指定链接的资源    target: 设置打开新资源的目标。    _Blank 在独立的窗口上打开新资源   _self 在当前窗口打开新资源  file: file协议(文件协议)这种协议主要是用于搜索本地机器的资源文件的。 格…

    好文分享 2025年12月21日
    000
  • html中的table详解

    本篇文章主要介绍html中的table,感兴趣的朋友参考下,希望对大家有所帮助。 普通表格,简单的HTML表格由table元素以及tr、td和th元素组成,其中tr是指表格行,td是指单元格,th定义表头。空单元格就直接不填即可,或者用 。 表头表头表头单元格1单元格3 2.带有边框的表格。bord…

    好文分享 2025年12月21日
    000
  • 实现简易html视频播放器的方法

    这篇文章主要介绍了实现简易html视频播放器的方法,h5创建视频播放器很简单,您只需要添加一些h5的标签即可创建出炫酷的播放器 本文介绍了实现简易html视频播放器的方法,分享给大家,具体如下: 文件列表 root@tianshl:/data/video# lshch.mp4 test.mp4 xy…

    2025年12月21日
    000
  • html中的标签详解

    html标签是html语言中最基本的单位,html标签是html最重要的组成部分。网页的内容需在标签中,标题、字符格式、语言、兼容性、关键字、描述等信息显示在 标签中,而网页需展示的内容需嵌套在标签中。某些时候不按标准书写代码虽然可以正常显示,但还是应该养成正规编写习惯。 1.文档结构标签:主要用来…

    好文分享 2025年12月21日
    000
  • 如何将html转化为图片

    在我们做h5页面或者推广小程序的时候,特别是在微信里,为了让用户更好的分享给朋友,往往需要将动态生成的html生成一个图片,然后让用户长按保存发给朋友或者朋友圈。 1,在html里新建canvas画布 /**要生成图片的html*/ 思路惊奇 思路惊奇 @@##@@ @@##@@/*生成的canva…

    好文分享 2025年12月21日
    000
  • html写网页如何布局

    html常用的布局有两种。第一种一是div布局,优点是比较方便简洁,代码比较少,制作和维护也比较容易,就是有些地方不同的浏览器兼容性不一样,可能会有不同的显示。第二种是table布局,代码比较多,到后期维护起来是非常头疼的,但是table布局规避了许多浏览器不兼容的问题。 1.div布局 body{…

    好文分享 2025年12月21日
    000
  • 如何用html制作百度首页

    本篇文章适用与刚学html和css,练习一个比较简单的百度首页,因为百度的主页比较简单,大概分为三个部分:右上角的标签、logo和表单、下面的版权信息。对于刚开始想要检测学习成果是一个不错的好方法,熟练后再去尝试写一些复杂的html网页。 下面是html制作百度首页的源码 百度一下,你就知道搜索设置…

    好文分享 2025年12月21日
    000
  • html中的有序列表和无序列表

    本篇文章主要介绍html中的有序与无序列表示如何编写的,对于刚开始学习的小伙伴还是非常有帮助的,感兴趣的朋友参考下。 有序列表代码如下: 数字显示 第一天 第二天 第三天 第四天 字母显示 第一天 第二天 第三天 第四天 小写罗马数字显示 第一天 第二天 第三天 第四天 大写罗马数字显示 第一天 第…

    2025年12月21日
    000

发表回复

登录后才能评论
关注微信