JavaScript表格搜索高亮功能模拟
在网页表格中模拟excle的搜索高亮显示功能。当在搜索框中输入需要的姓名时,若表格中存在对应的数据,则该表格背景色变为黄色。
下面为表的HTML源码:
<!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>5</td><td>JavaScript权威指南</td><td>27</td></tr>
</tbody>
</table>
</body>
</html>
模拟思路:获取表格中姓名列对应的元素集合的value值,与输入表格值进行比较是否相等。若两值相等,则高亮显示,其余表格不变色。
window.onload=function()
{
var oTxt=document.getElementById('name');
var oBtn=document.getElementById('btn1');
var oTab=document.getElementById('tab1');
oBtn.onclick=function()
{
for(var i=0;i<oTab.tBodies[0].rows.length;i++)
{
if(oTab.tBodies[0].rows[i].cells[1].innerHTML==oTxt.value)
{
oTab.tBodies[0].rows[i].cells[1].style.background='yellow';
}
else
{
oTab.tBodies[0].rows[i].cells[1].style.background='';
}
}
}
};
(1)出现问题
代码写成这样:
window.onload=function()
{
var oTxt=document.getElementById('name');
var oBtn=document.getElementById('btn1');
var oTab=document.getElementById('tab1');
var oValue=oTxt.value; oBtn.onclick=function()
{
for(var i=0;i<oTab.tBodies[0].rows.length;i++)
{
if(oTab.tBodies[0].rows[i].cells[1].innerHTML==oValue)
{
oTab.tBodies[0].rows[i].cells[1].style.background='yellow';
}
else
{
oTab.tBodies[0].rows[i].cells[1].style.background='';
}
}
} };
造成第一次输入点击后,第二次输入点击无效。
初步定为问题产生的bug在于后者在于获取input元素的value时,定义变量var oValue=oTxt.value;
if(oTab.tBodies[0].rows[i].cells[1].innerHTML==oTxt.value)与
if(oTab.tBodies[0].rows[i].cells[1].innerHTML==oValue)两者的差异。
造成这个bug的原因是什么?
var oTxt=document.getElementById('name');
var oValue=oTxt.value;
if(oTab.tBodies[0].rows[i].cells[1].innerHTML==oValue)
与
var oTxt=document.getElementById('name');
if(oTab.tBodies[0].rows[i].cells[1].innerHTML==oTxt.value)
造成两个代码块的核心区别的原因是什么?
似乎在于变量赋值于点击事件触发函数调用的前后有关,将有问题的代码的变量移到函数内部,整个代码也正常了。JS中变量初始化的值只有一个?
window.onload=function()
{
var oTxt=document.getElementById('name');
var oBtn=document.getElementById('btn1');
var oTab=document.getElementById('tab1');
oBtn.onclick=function()
{
var oValue=oTxt.value;
for(var i=0;i<oTab.tBodies[0].rows.length;i++)
{
if(oTab.tBodies[0].rows[i].cells[1].innerHTML==oValue)
{
oTab.tBodies[0].rows[i].cells[1].style.background='yellow';
}
else
{
oTab.tBodies[0].rows[i].cells[1].style.background='';
}
}
} };
JavaScript表格搜索高亮功能模拟的更多相关文章
- JavaScript实现搜索联想功能
-.虽然Jquery已经有了一个完整的包 实现前端搜索联想功能,但是出于学习还是想了解一下实现此功能的原理性 回想起来 实现此功能很简单,1.前端输入字符串 文本改变 异步请求服务器 将返回的资料显示 ...
- Solr(五)Solr实现简单的类似百度搜索高亮功能-2代码
Solr高亮 一 在配置文件中,配置支持Ik分词器的Field 修改文件: cd /usr/local/tomcat/apache-tomcat-8.5.13/solr_home/Test/conf/ ...
- Solr(四)Solr实现简单的类似百度搜索高亮功能-1.配置Ik分词器
配置Ik分词器 一 效果图 二 实现此功能需要添加分词器,在这里使用比较主流的IK分词器. 1 没有配置IK分词器,用solr自带的text分词它会把一句话分成单个的字. 2 配置IK分词器,的话它会 ...
- 简单JavaScript语句实现搜索关键字高亮功能
高亮功能主要是指对页面中指定区域的指定文字进行高亮显示,也就是背景着色.一般在搜索结果页面会经常用到这个功能. 下面就为大家提供一种解决方案,用javascript实现. 首先在<head> ...
- Django中使用JS通过DataTable实现表格前端分页,每页显示页数,搜索等功能
Django架构中自带了后端分页的技术,通过Paginator进行分页,前端点击按钮提交后台进行页面切换. 优缺点:后端分页对于数据量大的场景有其优势,但页面切换比较慢. 后端分页python3代码如 ...
- 用jsonp实现搜索框功能
用jsonp实现搜索框功能 前面的话: 在上周本来想发一篇模仿必应搜索的界面.但是在准备写文章之前突然想到前面学习了ajax技术,在这里我也让我的页面有一种不需要手动刷新就能获取到数据.但是发现用前面 ...
- 分享12款 JavaScript 表格控件(DataGrid)
JavaScript 表格控件可以操作大数据集的 HTML 表格,提供各种功能,如分页.排序.过滤以及行编辑.在本文中,我们整理了13个最好的 JavaScript 表格插件分享给开发人员,开发者可以 ...
- 12款 JavaScript 表格控件(DataGrid)
JavaScript 表格控件可以操作大数据集的 HTML表格,提供各种功能,如分页.排序.过滤以及行编辑.在本文中,我们整理了13个最好的 JavaScript 表格插件分享给开发人员,开发者可以很 ...
- 【转】一张图解析FastAdmin中的表格列表的功能
一张图解析FastAdmin中的表格列表的功能 功能描述请根据图片上的数字索引查看对应功能说明. 1.时间筛选器如果想在搜索栏使用时间区间进行搜索,则可以在JS中修改修改字段属性,如 {field: ...
随机推荐
- 关于python中的property
python中的property在类实例化的时候 可以把类方法变成类属性使用, 还可以用在简化赋值上 1)不用property的时候,你的类可能是这样写的 2)用propery的时候你可能会这样写,调 ...
- Win10电脑如何更改开机启动项
https://jingyan.baidu.com/article/5970355284f0458fc1074049.html
- cuda_device_functions.h:32:31: fatal error: cuda/include/cuda.h: 没有那个文件或目录
问题在复现工程https://github.com/google/hdrnet时遇到. 现象: 解决办法: 修改hdrnet文件夹下的Makefile文件:在在nvcc里面添加路径:-I /usr/l ...
- 【Linq】
" }; var l1 = strs.ToLookup(a => "a"); //Key=a elements=1,3 var l2 = strs.ToLookup ...
- 内存_RAM或ROM_和FLASH存储的真正区别总结
http://blog.sina.com.cn/s/blog_4b37304d0100fg10.html
- 洛谷 1486 郁闷的出纳员【Treap】
[题意概述] 要求维护一个序列支持以下操作: 1,插入元素x: 2,把序列的所有元素加上x: 3,把序列的所有元素减去x,同时低于一个给定的下限的元素马上被删除: 4,询问序列中第k大的元素. [题解 ...
- web开发如何使用高德地图API(三)点击热点打开信息窗体
说两句: 以下内容除了我自己写的部分,其他部分在高德开放平台都有(可点击外链访问). 我所整理的内容以实际项目为基础希望更有针对性的,更精简. 点击直奔主题. 准备工作: 首先,注册开发者账号,成为高 ...
- hdu_1232_畅通工程_201403091018
畅通工程 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- 矩阵连乘 LRJ白书 p141 栈 解析表达式
#include<iostream> #include<cstdio> #include<cstring> #include<sstream> #inc ...
- [Mini Program] 尺寸单位 rpx
So each phone's width is 750rpx. And according to the device ratio (width:height), we can calucalate ...