原生JS 实现的input输入时表格过滤操作示例


Posted in Javascript onAugust 03, 2019

本文实例讲述了原生JS 实现的input输入时表格过滤操作。分享给大家供大家参考,具体如下:

需求:对input框进行键盘输入后根据输入的内容去匹配表格中指定的数据项,若存在相匹配的则只显示匹配的数据项;

细节处理:监听键盘输入后给一定的缓冲时间避免发生频繁的请求;

解决思路:给个定时器,当键盘开始输入时启动定时器,倘若在指定的时间内都不在进行输入操作,则执行匹配操作,否则取消操作,同时限定输入的字符串大于等于2位数字时再进行匹配操作,使过滤效果更精准一些。

<!--JS -->

var timer = null; //定义定时器
function filterTable(el){
  clearTimeout(timer);
  var oTable = document.getElementById("oTable");
  //获取需要匹配的元素集合
  var firstTdArr = oTable.getElementsByClassName("firstTd");
  if(el.value.length>1){ //限定匹配的字符至少为两位数
    var filterVal = el.value.toUpperCase();
    timer = setTimeout(function(){
      for(var i=0;i<firstTdArr.length;i++){
        //元素集合中存在匹配值时,显示匹配的记录,否则隐藏
        if (firstTdArr[i].innerHTML.toUpperCase().indexOf(filterVal) > -1) {
          firstTdArr[i].parentNode.style.display = "";
        }else{
          firstTdArr[i].parentNode.style.display = "none";
        }
      }
    },500);
  }else{
    //不满足匹配所需字符数量时,恢复匹配之前的模样
    for(var i=0;i<firstTdArr.length;i++){
      firstTdArr[i].parentNode.style.display = "";
    }
  }
}

<!-- HTML -->

<p><input type="text" οnkeyup="filterTable(this)"/></p>
<table id="oTable">
  <tr>
    <th>匹配数据</th>
    <th>数据项一</th>
    <th>数据项二</th>
    <th>数据项三</th>
  </tr>
  <tr>
    <td class="firstTd">JS前端数据多条件筛选</td>
    <td>11过滤table数据</td>
    <td>111过滤table数据</td>
    <td>1111过滤table数据</td>
  </tr>
  <tr>
    <td class="firstTd">程序员不会英语怎么行?</td>
    <td>22过滤table数据</td>
    <td>222过滤table数据</td>
    <td>2222过滤table数据</td>
  </tr>
  <tr>
    <td class="firstTd">前端代码编译后添加过滤</td>
    <td>33过滤table数据</td>
    <td>333过滤table数据</td>
    <td>3333过滤table数据</td>
  </tr>
  <tr>
    <td class="firstTd">大数据学习</td>
    <td>44过滤table数据</td>
    <td>444过滤table数据</td>
    <td>4444过滤table数据</td>
  </tr>
  <tr>
    <td class="firstTd">JS过滤HTML标签</td>
    <td>55过滤table数据</td>
    <td>555过滤table数据</td>
    <td>5555过滤table数据</td>
  </tr>
  <tr>
    <td class="firstTd">大数据你了解多少</td>
    <td>66过滤table数据</td>
    <td>666过滤table数据</td>
    <td>6666过滤table数据</td>
  </tr>
</table>

<!-- CSS3 -->

table{border: 1px solid #ccc;width: 900px;}
table tr:nth-child(odd){background:#F4F4F4;}
table tr:nth-child(even){background:#fff;}

<!-- 效果 -->

原生JS 实现的input输入时表格过滤操作示例

感兴趣的朋友可以使用在线HTML/CSS/JavaScript前端代码调试运行工具:http://tools.3water.com/code/WebCodeRun测试上述代码运行效果。

更多关于JavaScript相关内容可查看本站专题:《JavaScript表格(table)操作技巧大全》、《JavaScript操作DOM技巧总结》、《JavaScript数组操作技巧总结》、《JavaScript遍历算法与技巧总结》、《JavaScript数学运算用法总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript查找算法技巧总结》及《JavaScript错误与调试技巧总结》

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
JS backgroundImage控制
May 19 Javascript
javascript 词法作用域和闭包分析说明
Aug 12 Javascript
jQuery动态添加删除select项(实现代码)
Sep 03 Javascript
Jquery创建一个层当鼠标移动到层上面不消失效果
Dec 12 Javascript
JS调用页面表格导出excel示例代码
Mar 18 Javascript
一个奇葩的最短的 IE 版本判断JS脚本
May 28 Javascript
js数组去重的5种算法实现
Nov 04 Javascript
简述jQuery ajax的执行顺序
Jan 05 Javascript
微信小程序开发之改变data中数组或对象的某一属性值
Jul 05 Javascript
送你43道JS面试题(收藏)
Jun 17 Javascript
JavaScript设计模式---单例模式详解【四种基本形式】
May 16 Javascript
JavaScript事件循环及宏任务微任务原理解析
Sep 02 Javascript
vue.js基于v-for实现批量渲染 Json数组对象列表数据示例
Aug 03 #Javascript
vue.js实现数据库的JSON数据输出渲染到html页面功能示例
Aug 03 #Javascript
jQuery实现的记住帐号密码功能完整示例
Aug 03 #jQuery
小程序中英文混合排序问题解决
Aug 02 #Javascript
详解JWT token心得与使用实例
Aug 02 #Javascript
详解使用JWT实现单点登录(完全跨域方案)
Aug 02 #Javascript
基于mpvue的简单弹窗组件mptoast使用详解
Aug 02 #Javascript
You might like
生成sessionid和随机密码的例子
2006/10/09 PHP
在任意字符集下正常显示网页的方法二(续)
2007/04/01 PHP
PHP中array_slice函数用法实例详解
2014/11/25 PHP
php查询mysql数据库并将结果保存到数组的方法
2015/03/18 PHP
PHP调用存储过程返回值不一致问题的解决方法分析
2016/04/26 PHP
php 防止表单重复提交两种实现方法
2016/11/03 PHP
php+jQuery ajax实现的实时刷新显示数据功能示例
2019/09/12 PHP
JavaScript针对网页节点的增删改查用法实例
2015/02/02 Javascript
javascript高级选择器querySelector和querySelectorAll全面解析
2016/04/07 Javascript
AngularJS中的缓存使用
2017/01/11 Javascript
浅谈Vue父子组件和非父子组件传值问题
2017/08/22 Javascript
vuejs实现递归树型菜单组件
2018/01/13 Javascript
小程序从手动埋点到自动埋点的实现方法
2019/01/24 Javascript
微信小程序里引入SVG矢量图标的方法
2019/09/20 Javascript
微信小程序实现自定义动画弹框/提示框的方法实例
2020/11/06 Javascript
原生JavaScript实现购物车
2021/01/10 Javascript
python递归查询菜单并转换成json实例
2017/03/27 Python
Python中格式化format()方法详解
2017/04/01 Python
Python实现采用进度条实时显示处理进度的方法
2017/12/19 Python
Python开发虚拟环境使用virtualenvwrapper的搭建步骤教程图解
2018/09/19 Python
利用Python正则表达式过滤敏感词的方法
2019/01/21 Python
python解压TAR文件至指定文件夹的实例
2019/06/10 Python
Flask框架学习笔记之使用Flask实现表单开发详解
2019/08/12 Python
python web框架 django wsgi原理解析
2019/08/20 Python
使用python把xmind转换成excel测试用例的实现代码
2020/10/12 Python
奥地利网上书店:Weltbild
2017/07/14 全球购物
构造方法和其他方法的区别
2016/04/26 面试题
高中校园广播稿
2014/01/11 职场文书
高中体育教学反思
2014/01/24 职场文书
初中学生期末评语
2014/04/24 职场文书
房屋租赁协议书(标准版)
2014/10/02 职场文书
2015年客服工作总结范文
2015/04/02 职场文书
自愿离婚协议书范本2016
2016/03/18 职场文书
redis 查看所有的key方式
2021/05/07 Redis
Python中文纠错的简单实现
2021/07/07 Python
MySQL空间数据存储及函数
2021/09/25 MySQL