js实现模糊匹配功能


Posted in Javascript onFebruary 15, 2017

功能描述:

在搜索框中输入某一个字段,可以查询到相关的内容

功能实现:

1.  先声明变量用于保存输入框以及表格里面的内容
2.  循环遍历
遍历表格每一行,查找匹配项
3.  判断
如果输入框里面的内容跟表格中某个td的内容相似,则表格中的某行就显示,否则隐藏

功能实现:

<html> 
<head> 
  <style> 
    #myInput { 
      width: 100%; 
      font-size: 16px; 
      padding: 12px 20px 12px 40px; 
      border: 1px solid #ddd; 
      margin-bottom: 12px; 
    } 
    #myTable { 
      border-collapse: collapse; 
      width: 100%; 
      border: 1px solid #ddd; 
      font-size: 18px; 
    } 
    #myTable th, #myTable td { 
      text-align: left; 
      padding: 12px; 
    } 
    #myTable tr { 
      border-bottom: 1px solid #ddd; 
    } 
    #myTable tr.header, #myTable tr:hover { 
      background-color: #f1f1f1; 
    } 
  </style> 
</head> 
<body> 
<input type="text" id="myInput" onkeyup="myFunction()" placeholder="搜索..."> 
<table id="myTable"> 
  <tr class="header"> 
    <th style="width:60%;">项目名称</th> 
    <th style="width:40%;">时间</th> 
  </tr> 
  <tr> 
    <td>redPackets</td> 
    <td>2017.2.6</td> 
  </tr> 
  <tr> 
    <td>traffic</td> 
    <td>2016.12.25</td> 
  </tr> 
  <tr> 
    <td>creditCard</td> 
    <td>2017.1.18</td> 
  </tr> 
  <tr> 
    <td>returnMoney</td> 
    <td>2016.11.25</td> 
  </tr> 
</table> 
<script> 
  function myFunction() { 
    // 声明变量 
    var input, filter, table, tr, td, i; 
    input = document.getElementById("myInput"); 
    filter = input.value.toUpperCase(); 
    table = document.getElementById("myTable"); 
    tr = table.getElementsByTagName("tr"); 
    // 循环表格每一行,查找匹配项 
    for (i = 0; i < tr.length; i++) { 
      td = tr[i].getElementsByTagName("td")[0]; 
      if (td) { 
        if (td.innerHTML.toUpperCase().indexOf(filter) > -1) { 
          tr[i].style.display = ""; 
        } else { 
          tr[i].style.display = "none"; 
        } 
      } 
    } 
  } 
</script> 
</body> 
</html>

扩展:模拟通讯录搜索提示

<html> 
<head> 
  <style> 
    #myInput { 
      width: 100%; 
      font-size: 16px; /* 加大字体 */ 
      padding: 12px 20px 12px 40px; 
      border: 1px solid #ddd; 
      margin-bottom: 12px; 
    } 
 
    #myUL { 
      list-style-type: none; 
      padding: 0; 
      margin: 0; 
    } 
 
    #myUL li a { 
      border: 1px solid #ddd; /* 链接添加边框 */ 
      margin-top: -1px; 
      background-color: #f6f6f6; 
      padding: 12px; 
      text-decoration: none; 
      font-size: 18px; 
      color: black; 
      display: block; 
    } 
 
    #myUL li a.header { 
      background-color: #5587A2; 
      cursor: default; 
    } 
 
    #myUL li a:hover:not(.header) { 
      background-color: #eee; 
    } 
  </style> 
</head> 
<body> 
  <input type="text" id="myInput" onkeyup="myFunction()" placeholder="搜索..."> 
 
  <ul id="myUL"> 
    <li><a href="#" class="header">A</a></li> 
    <li><a href="#">Angel</a></li> 
    <li><a href="#">Adobe</a></li> 
    <li><a href="#">Anne</a></li> 
 
    <li><a href="#" class="header">B</a></li> 
    <li><a href="#">Betty</a></li> 
    <li><a href="#">Bella</a></li> 
    <li><a href="#">Brown</a></li> 
 
    <li><a href="#" class="header">C</a></li> 
    <li><a href="#">Calvin</a></li> 
    <li><a href="#">Chris</a></li> 
    <li><a href="#">Claire</a></li> 
 
    <li><a href="#" class="header">D</a></li> 
    <li><a href="#">David</a></li> 
    <li><a href="#">Daniel</a></li> 
    <li><a href="#">Dora</a></li> 
 
    <li><a href="#" class="header">E</a></li> 
    <li><a href="#">Emily</a></li> 
    <li><a href="#">Elena</a></li> 
    <li><a href="#">Eufemia</a></li> 
  </ul> 
<script> 
  function myFunction() { 
    // 声明变量 
    var input, filter, ul, li, a, i; 
    input = document.getElementById('myInput'); 
    filter = input.value.toUpperCase(); 
    ul = document.getElementById("myUL"); 
    li = ul.getElementsByTagName('li'); 
 
    // 循环所有列表,查找匹配项 
    for (i = 0; i < li.length; i++) { 
      a = li[i].getElementsByTagName("a")[0]; 
      if (a.innerHTML.toUpperCase().indexOf(filter) > -1) { 
        li[i].style.display = ""; 
      } else { 
        li[i].style.display = "none"; 
      } 
    } 
  } 
</script> 
</body> 
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
在jquery中处理带有命名空间的XML数据
Jun 13 Javascript
jquery1.9 下检测浏览器类型和版本的方法
Dec 26 Javascript
jQuery的cookie插件实现保存用户登陆信息
Apr 15 Javascript
如何使用AngularJs打造权限管理系统【简易型】
May 09 Javascript
AngularJs用户输入动态模板XSS攻击示例详解
Apr 21 Javascript
JS中的JSON对象的定义和取值实现代码
May 09 Javascript
JavaScript中arguments和this对象用法分析
Aug 08 Javascript
记React connect的几种写法(小结)
Sep 18 Javascript
vue双向绑定及观察者模式详解
Mar 19 Javascript
vue实现简单跑马灯效果
May 25 Javascript
基于Vue sessionStorage实现保留搜索框搜索内容
Jun 01 Javascript
JavaScript继承的三种方法实例
May 12 Javascript
js 性能优化之算法和流程控制
Feb 15 #Javascript
微信小程序 常用工具类详解及实例
Feb 15 #Javascript
微信小程序 基础知识css样式media标签
Feb 15 #Javascript
js 性能优化之快速响应的用户界面
Feb 15 #Javascript
微信小程序  http请求封装详解及实例代码
Feb 15 #Javascript
DOM事件探秘篇
Feb 15 #Javascript
详解Angularjs 如何自定义Img的ng-load 事件
Feb 15 #Javascript
You might like
解决MySQL中文输出变成问号的问题
2008/06/05 PHP
php 动态多文件上传
2009/01/18 PHP
PHP中SSO Cookie登录分析和实现
2015/11/06 PHP
PHP7 list() 函数修改
2021/03/09 PHP
JavaScript 学习小结(适合新手参考)
2009/07/30 Javascript
JQuery Highcharts 动态生成图表的方法
2013/11/15 Javascript
如何在JavaScript中实现私有属性的写类方式(二)
2013/12/04 Javascript
js下将阿拉伯数字每三位一逗号分隔(如:15000000转化为15,000,000)
2014/06/02 Javascript
如何判断微信内置浏览器(通过User Agent实现)
2014/09/01 Javascript
关于编写性能高效的javascript事件的技术
2014/11/28 Javascript
在Node.js应用中读写Redis数据库的简单方法
2015/06/30 Javascript
bootstrap实现弹窗和拖动效果
2016/01/03 Javascript
jQuery插件ImgAreaSelect实现头像上传预览和裁剪功能实例讲解一
2017/05/26 jQuery
jQuery实现全选、反选和不选功能
2017/08/16 jQuery
浅谈高大上的微信小程序中渲染html内容—技术分享
2018/10/25 Javascript
Vue.Draggable拖拽功能的配置使用方法
2020/07/29 Javascript
ES7之Async/await的使用详解
2019/03/28 Javascript
webpack4实现不同的导出类型
2019/04/09 Javascript
浅谈vue限制文本框输入数字的正确姿势
2019/09/02 Javascript
微信小程序indexOf的替换方法(推荐)
2020/01/14 Javascript
vue+axios 拦截器实现统一token的案例
2020/09/11 Javascript
unittest+coverage单元测试代码覆盖操作实例详解
2018/04/04 Python
Python打开文件,将list、numpy数组内容写入txt文件中的方法
2018/10/26 Python
Python+OpenCV实现实时眼动追踪的示例代码
2019/11/11 Python
Jupyter notebook无法导入第三方模块的解决方式
2020/04/15 Python
波比布朗英国官网:Bobbi Brown英国
2017/11/13 全球购物
如何将字串String转换成整数int
2015/02/21 面试题
百度软件工程师职位
2013/02/14 面试题
医院信息公开实施方案
2014/05/09 职场文书
2014年检验科工作总结
2014/11/22 职场文书
2014年人民调解工作总结
2014/12/08 职场文书
2014年艾滋病防治工作总结
2014/12/10 职场文书
2015年实习班主任工作总结
2015/04/23 职场文书
学习《中小学教师职业道德规范》心得体会
2016/01/18 职场文书
python爬虫selenium模块详解
2021/03/30 Python
Spring依赖注入多种类型数据的示例代码
2022/03/31 Java/Android