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: ...
随机推荐
- Lvs Keepalive DR模式高可用配置
Lvs Keepalive DR模式配置 一.环境 #DIP# eth0:192.168.233.145#VIP# eth0:0 192.168.233.250/32 #RIP1:192.168.23 ...
- (转) Arcgis for js之WKT和GEOMETRY的相互转换
http://blog.csdn.net/gisshixisheng/article/details/44057453 1.wkt简介 WKT(Well-known text)是一种文本标记语言,用于 ...
- Linux 开启443端口
1 在Linux终端输入指令: iptables -I INPUT -p tcp --dport 443 -j ACCEPT 2 回车之后继续输入指令,输入保存防火墙配置指令: service ...
- 4.几个「不难但却很有用」的 Git 技能点
阅读 Git 原理详解及实用指南 记录 tag:不可移动的 branch tag 是一个和 branch 非常相似的概念,它和 branch 最大的区别是:tag 不能移动.所以在很多团队中,tag ...
- 36.分组聚合操作—bucket进行多层嵌套
主要知识点: 分组聚合操作-嵌套bucket. 本讲以前面电商实例,从颜色到品牌进行下钻分析,每种颜色的平均价格,以及找到每种颜色每个品牌的平均价格. 比如说,现在红色的电视有4台,同 ...
- python BeautiulSoup
==============================================查找网页中<a>标签中的链接from bs4 import BeautifulSoup with ...
- 一个电商项目的Web服务化改造7:Dubbo服务的调用,4个项目
使用dubbo服务的过程,很简单,和之前学习的WebService完全一样,和本地接口调用也基本一致. dubbo和WebService的区别:我认为dubbo就是封装了WebService,然后提供 ...
- 【[Offer收割]编程练习赛 14 A】小Hi和小Ho的礼物
[题目链接]:http://hihocoder.com/problemset/problem/1505 [题意] [题解] 考虑Meet in the middle. 因为两个数的和不是很大; 直接用 ...
- BZOJ1192 鬼谷子的钱袋
没想到这是一道省选题... /* BZOJ1192 */ #include <cstdio> int main() { ; scanf("%d",&m); ;m ...
- 用循环链表实现Josephus问题
Josephus问题:设有n个人围坐在一个圆桌周围,现从第s个人开始报数,数到第m的人出列,然后从出列的下一个人重新开始报数,数到第m的人又出列.如此反复直到所有的人全部出列为止. 思路:构建一个没有 ...