JavaScript在表格中模拟搜索多关键词搜索和筛选
模拟搜索需要实现以下功能:
1、用户的模糊搜索不区分大小写,需要小写字母匹配同样可以匹配到该字母的大写单词。
2、多关键词模糊搜索,假设用户关键词以空格分隔,在关键词不完整的情况下仍然可以匹配到包含该关键字的表格。
3、表格筛选,符合条件的表格展现,不符合条件的表格隐藏。
<!doctype html>
<html>
<head>
<title>表格搜索</title>
<meta charset="utf-8">
<style>
html{font-family:楷体;}
</style>
</head>
<body>
姓名:<input id='name' type='text'/>
<input id='btn1' type='button' value='搜索'/>
<table id='tab1' border="1" width="500" >
<thead>
<tr><td>ID</td><td>姓名</td><td>年龄</td></tr>
</thead>
<tbody>
<tr><td>1</td><td>阿童木</td><td>30</td></tr>
<tr><td>2</td><td>机器猫</td><td>44</td></tr>
<tr><td>3</td><td>小叮当</td><td>53</td></tr>
<tr><td>4</td><td>海雅</td><td>69</td></tr>
<tr><td>5</td><td>祖鲁</td><td>27</td></tr>
<tr><td>6</td><td>JavaScript权威指南</td><td>28</td></tr>
</tbody>
</table>
</body>
</html>
【1、用户的模糊搜索不区分大小写,需要小写字母匹配同样可以匹配到该字母的大写单词。】思路:由于JS区分大小写,需要将用户输入值与表格中的innerHTML值均转换为小写形式,再进行匹配,实现模糊匹配效果。函数toLowerCase()把字符串转换为小写。
JavaScript代码:
window.onload=function()
{
var oTab=document.getElementById('tab1');
var oTxt=document.getElementById('name');
var oBtn=document.getElementById('btn1'); oBtn.onclick=function()
{
for(var i=0;i<oTab.tBodies[0].rows.length;i++)
{
oTab.tBodies[0].rows[i].style.display='none';
if(oTxt.value.toLowerCase()==oTab.tBodies[0].rows[i].cells[1].innerHTML.toLowerCase())
{
oTab.tBodies[0].rows[i].style.display='block';
}
}
} };
【2、多关键词模糊搜索,假设用户关键词以空格分隔,在关键词不完整的情况下仍然可以匹配到包含该关键字的表格。】思路:搜索词通过split()函数进行分割,每个切割的单元search()函数检测是否在表格单元的字符串值中存在。
window.onload=function()
{
var oTab=document.getElementById('tab1');
var oTxt=document.getElementById('name');
var oBtn=document.getElementById('btn1'); oBtn.onclick=function()
{
for(var i=0;i<oTab.tBodies[0].rows.length;i++)
{
oTab.tBodies[0].rows[i].style.display='none';
var sTab=oTab.tBodies[0].rows[i].cells[1].innerHTML.toLowerCase();
var sTxt=oTxt.value.toLowerCase();
var arr=sTxt.split(' ');
for(var j=0;j<arr.length;j++)
{
if(sTab.search(arr[j])!==-1)
{
oTab.tBodies[0].rows[i].style.display='block';
}
}
}
}
};
错误的JavaScript代码
oBtn.onclick=function()
{
for(var i=0;i<oTab.tBodies[0].rows.length;i++)
{
oTab.tBodies[0].rows[i].style.display='none';
var sTxt=oTxt.value.toLowerCase().split(' ');
if(oTab.tBodies[0].rows[i].cells[1].innerHTML.toLowerCase().search(sTxt)!==-1)
{
oTab.tBodies[0].rows[i].style.display='block';
}
}
(a)split()函数切割获得由一连串字符串组成的数组。search()函数内的参数为需要检索的字符串。(b)for循环内嵌套for循环时,若嵌套的for循环中包含两个循环参数,需要注意嵌套的循环若定义变量与外部循环相同可能导致的逻辑问题。
JavaScript在表格中模拟搜索多关键词搜索和筛选的更多相关文章
- JavaScript向表格中添加按钮和文本输入框
例子: <?php ?> <html> <head> <meta http-equiv="Content-Type" content=&q ...
- 【高德地图API】从零开始学高德JS API(四)搜索服务——POI搜索|自动完成|输入提示|行政区域|交叉路口|自有数据检索
原文:[高德地图API]从零开始学高德JS API(四)搜索服务——POI搜索|自动完成|输入提示|行政区域|交叉路口|自有数据检索 摘要:地图服务,大家能想到哪些?POI搜素,输入提示,地址解析,公 ...
- 【高德地图API】从零開始学高德JS API(四)搜索服务——POI搜索|自己主动完毕|输入提示|行政区域|交叉路口|自有数据检索
地图服务.大家能想到哪些?POI搜素,输入提示,地址解析,公交导航,驾车导航,步行导航,道路查询(交叉口),行政区划等等.假设说覆盖物Marker是地图的骨骼,那么服务,就是地图的气血. 有个各种各样 ...
- 获取百度地图POI数据三(模拟关键词搜索)
上一篇博文中讲到如何获取用于搜索的关键词,并且已经准备好了一百五十万的关键词 这其中有门牌号码,餐馆酒店名称,公司名称,道路名称等.有了这些数据,我们就可以通过代码,模拟我们在百度地图的搜索框中搜 ...
- 在C#中模拟Javascript的setTimeout方法
在C#中模拟Javascript的setTimeout方法 背景 每种语言都有自己的定时器(Timer),很多人熟悉Javascript中的setInterval和setTimeout,在Javasc ...
- UWP 在 WebView 中执行 JavaScript 代码(用于模拟用户输入等)
UWP 中使用 WebView 时可以在网页中额外执行一些代码.于是你几乎可以在网页上做任何事情,那些你可以在浏览器控制台中做的事情. 本文将介绍做法. 本文内容 准备环境 执行 JavaScript ...
- UWP 在 WebView 中执行 JavaScript 代码(用于模拟用户输入等) - walterlv
原文:UWP 在 WebView 中执行 JavaScript 代码(用于模拟用户输入等) - walterlv UWP 在 WebView 中执行 JavaScript 代码(用于模拟用户输入等) ...
- JavaScript读取剪贴板中的表格生成图片
原文 JavaScript读取剪贴板中的表格生成图片 演示地址 你可以访问下面的地址体验每个demo https://fairyever.github.io/excel-to-image-demo/ ...
- ajax异步获取数据后动态向表格中添加数据(行)
因为某些原因,项目中突然需要做自己做个ajax异步获取数据后动态向表格中添加数据的页面,网上找了半天都没有 看到现成的,决定自己写个例子 1.HTML页面 <!doctype html> ...
随机推荐
- * 获取页面参数 * @return 参数打印
/** * 获取页面参数 * @return 参数打印 */ GetUrlParam: function(paraName) { var url = document.location.toStrin ...
- 栈和队列问题:设计一个有 getMin 功能的栈
[知识点] 栈是一个先进后出(FILO-First In Last Out)的数据结构,队列是一种先进先出(FIFO-First In First Out)的数据结构. [题目] 实现一个特殊的栈,在 ...
- SQL With As 用法Sql 四大排名函数(ROW_NUMBER、RANK、DENSE_RANK、NTILE)简介
Sql 四大排名函数(ROW_NUMBER.RANK.DENSE_RANK.NTILE)简介 排名函数是Sql Server2005新增的功能,下面简单介绍一下他们各自的用法和区别.我们新建一张O ...
- HTML 符号实体
带有实体名称的 ASCII 实体 结果 描述 实体名称 实体编号 " quotation mark " " ' apostrophe ' ' & ...
- 8.2.3 覆写 Equals
经过对四种不同类型判等方法的讨论,我们不难发现不管是 Equals 静态方法.Equals 虚方法 抑或==操作符的执行结果,都可能受到覆写 Equals 方法的影响.因此研究对象判等就必须将注意 力 ...
- python之urllib库
urllib库 urllib库是Python中一个最基本的网络请求库.可以模拟浏览器的行为,向指定的服务器发送一个请求,并可以保存服务器返回的数据. urlopen函数: 在Python3的urlli ...
- [SQL Service] 时间处理:获取今天的00:00:00/获取今天的23:59:59
获取今天的00:00:00 SELECT CONVERT(DATETIME,CONVERT(VARCHAR(10),GETDATE(),120)) 获取今天的23:59:59 1.SELECT DAT ...
- git对vue项目进行版本管理
生成本地仓库 步骤一:git init 步骤二:git add * 步骤三:git commit -m 'init team' 创建远程仓库 new responstory 复制关联代码的命令 将本地 ...
- 爬虫系列(三) urllib的基本使用
一.urllib 简介 urllib 是 Python3 中自带的 HTTP 请求库,无需复杂的安装过程即可正常使用,十分适合爬虫入门 urllib 中包含四个模块,分别是 request:请求处理模 ...
- springcloud(四):Eureka客户端公共组件打包方式
, 一.前言 各位大佬应该知道,在大型项目中都需要有数据传输层,一般项目都采用的是MVC结构,如果有10个表,则会创建10个实体类,在各个层之间应该使用实体类传递数据: 在微服架构中,也许 ...