最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

html页面用js中实现查找功能

来源:懂视网 责编:小采 时间:2020-11-27 15:27:40
文档

html页面用js中实现查找功能

html页面用js中实现查找功能:今天先说一个这几天做的功能,就是html页面的查找功能。 这个功能主要是实现在html查找框内输入字符,之后按后面的上一个下一个按钮,会自动把查询区域内的匹配字符用特殊的样式标记,之后可以继续按上一个下一个按钮把按照顺序浏览匹配字符,并把当前匹配的
推荐度:
导读html页面用js中实现查找功能:今天先说一个这几天做的功能,就是html页面的查找功能。 这个功能主要是实现在html查找框内输入字符,之后按后面的上一个下一个按钮,会自动把查询区域内的匹配字符用特殊的样式标记,之后可以继续按上一个下一个按钮把按照顺序浏览匹配字符,并把当前匹配的
今天先说一个这几天做的功能,就是html页面的查找功能。 这个功能主要是实现在html查找框内输入字符,之后按后面的上一个下一个按钮,会自动把查询区域内的匹配字符用特殊的样式标记,之后可以继续按上一个下一个按钮把按照顺序浏览匹配字符,并把当前匹配的字符用另一种样式与其他匹配字符加以区别。付有html代码哦!

样式演示:

@WG(NDK33XF7CN7R~]85ZI5.png

代码演示:

html

<div class="container" style="z-index: 999" id="searchDiv">
<div class="keyword-search">
查找:
<input id="key" type="text" style="width: 200px;" placeholder="关键词" />
<a href="javascript:void(0);" class="prev" onclick='wordSearch(1)'><i class="c-icon"></i></a>
<a href="javascript:void(0);" class="next" onclick='wordSearch()'><i class="c-icon"></i></a>
</div>
</div>

script

 <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 <= oldCount0 && 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"), "<span id='result" + (index++) + "' class='result'>" + key + "</span>")); // 替换
 });
 } else {
 $(".contrast-wrap").addClass('current');
 currentLength = $(".current").length;
 $(".contrast").each(function () {
 $(this).html($(this).html().replace(new RegExp(key, "gm"), "<span id='result" + (index++) + "' class='result'>" + key + "</span>")); // 替换
 });
 }
 //$("#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 = "";
 }
 });
 </script>

接下来记一下实现原理:

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

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

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

相关推荐:

HTML怎么实现数字焦点图轮播代码

html里怎么插入图片

HTML里DIV相互重叠怎么办

HTML里怎么使用margin 0 auto

文档

html页面用js中实现查找功能

html页面用js中实现查找功能:今天先说一个这几天做的功能,就是html页面的查找功能。 这个功能主要是实现在html查找框内输入字符,之后按后面的上一个下一个按钮,会自动把查询区域内的匹配字符用特殊的样式标记,之后可以继续按上一个下一个按钮把按照顺序浏览匹配字符,并把当前匹配的
推荐度:
标签: 查询 搜索 查找
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top