day36—javascript对表格table的操作应用(一)
转行学开发,代码100天——2018-04-21
今天记录一下,JavaScript对表格table的操作应用,包括表格元素的获取,创建,删除等。
一个普通的完整表格包括以下几个部分:table->thead->tbody->tr->td等
1.表格的创建
如下面的一个表格,表头部分:序号-姓名-年龄
其下有三行三列的内容,属于tbody部分
其html结构如下:
<table id="tab" border="3" width="600px" height="40px" >
<thead>
<td>序号</td>
<td>姓名</td>
<td>年龄</td>
</thead> <tbody>
<tr>
<td>1</td>
<td>tom</td>
<td>23</td>
</tr>
<tr>
<td>2</td>
<td>john</td>
<td>33</td>
</tr>
<tr>
<td>3</td>
<td>july</td>
<td>21</td>
</tr> </tbody>
</table>
2.表格元素的获取
比如要想获取上述表格中的年龄为21的单元格内容,用什么方法呢?
最普通的实现思路就是逐步获取table->tbody->tr->td
如下:
getElementsByTagName
window.onload = function(){ var oTab = document.getElementById("tab");
alert(oTab.getElementsByTagName('tbody')[0].getElementsByTagName('tr')[2].getElementsByTagName('td')[2].innerHTML);
};
而实际上表格本身包括行row和列column方法
alert(oTab.tBodies[0].rows[2].cells[2].innerHTML);
即获取tBody可以用tBodies
获取行用rows
获取单元格用cells
3.隔行变色
//隔行变色
for (var i = 0; i < oTab.tBodies[0].rows.length; i++) {
if (i%2) {
oTab.tBodies[0].rows[i].style.background ="";
}else
{
oTab.tBodies[0].rows[i].style.background="#666";
}
}
4.鼠标移入移出表格换色
//鼠标移入移出变色操作
oTab.tBodies[0].rows[i].onmouseover = function(){
this.style.background="#999";
};
oTab.tBodies[0].rows[i].onmouseout = function(){
this.style.background="";
}
此时如果鼠标滑过表格中某行时,该行颜色变色。
如此其基本功能完成了,但是结合上一步,如果同时要求各行换色,鼠标移动操作变色效果会如何呢?
//隔行变色
for (var i = 0; i < oTab.tBodies[0].rows.length; i++) {
if (i%2) {
oTab.tBodies[0].rows[i].style.background ="";
}else
{
oTab.tBodies[0].rows[i].style.background="#666";
} //鼠标移入移出变色操作
oTab.tBodies[0].rows[i].onmouseover = function(){
this.style.background="#999";
};
oTab.tBodies[0].rows[i].onmouseout = function(){
this.style.background="";
}
}
鼠标移至第一行,其效果:
但是鼠标移开后, 其颜色均为白色,即代码中设置的空
如此便不是我们预期的效果了。。。
这一问题的处理,其实也很简单,即设置一个变量保存鼠标移动行的颜色,鼠标移开时还原即可。
//隔行变色
for (var i = 0; i < oTab.tBodies[0].rows.length; i++) {
var oOldColor = null; //新建一个保存当前行颜色的变量 if (i%2) {
oTab.tBodies[0].rows[i].style.background ="";
}else
{
oTab.tBodies[0].rows[i].style.background="#666";
} //鼠标移入移出变色操作
oTab.tBodies[0].rows[i].onmouseover = function(){
oOldColor = this.style.background; //保存变色之前的颜色
this.style.background="#999";
};
oTab.tBodies[0].rows[i].onmouseout = function(){
this.style.background=oOldColor; //还原到之前的颜色
}
}
day36—javascript对表格table的操作应用(一)的更多相关文章
- day37—javascript对表格table的操作应用(二)
转行学开发,代码100天——2018-04-22 昨天学习了JavaScript对table的基本操作,包括表格的创建,表格元素的获取,隔行换色及鼠标动作等.今天主要学习table的搜索查询及排序操作 ...
- jQuery动态对表格Table进行添加或删除行以及修改列值操作
jQuery,不仅可以以少量的代码做很多操作,而且兼容性好(各种浏览器,各种版本). 下面用jQuery动态对表格Table进行添加或删除行以及修改列值操作 1.jQuery代码 <script ...
- JavaScript(第二十天)【DOM操作表格及样式】
DOM在操作生成HTML上,还是比较简明的.不过,由于浏览器总是存在兼容和陷阱,导致最终的操作就不是那么简单方便了.本章主要了解一下DOM操作表格和样式的一些知识. 一.操作表格 <table& ...
- 使用 iview Table 表格组件修改操作的显示隐藏
使用 iview Table 表格组件修改操作的显示隐藏,如下图 1.如何设置 table 操作按后台传入的状态值去渲染 不同的按钮? 解决方法 我们在vue2中,动态渲染html 使用的是 retu ...
- 采用DOM进行表格的修改操作
2015-08-31 <html> <head> <title>采用DOM进行表格的修改操作</title> <script language=& ...
- JavaScript 实现表格隔行变色
JavaScript 实现表格隔行变色 版权声明:未经授权,严禁分享! 构建界面 界面HTML代码 <style> #data,th,td{ border: 1px solid #aaaa ...
- jQuery 选择表格(table)里的行和列及改变简单样式
本文只是介绍如何用jQuery语句对表格中行和列进行选择以及一些简单样式改变,希望它可以对jQuery表格处理的深层学习提供一些帮助jQuery对表格(table)的处理提供了相当强大的功能,比如说对 ...
- javascript生成表格增删改查 JavaScript动态改变表格单元格内容 动态生成表格 JS获取表格任意单元格 javascript如何动态删除表格某一行
jsp页面表格布局Html代码 <body onload="show()"> <center> <input type="text" ...
- JavaScript创建表格的两种方式
方式一: var data = [ { id: 1, name: "first", age: 12 }, { id: 2, name: "second", ag ...
随机推荐
- Java-Lambda表达式第一篇认识Lambda表达式
1.Lambda表达式时Java 8新增的特性.Lambda表达式支持将代码块作为方法参数,Lambda表达式允许使用更简洁的代码创建只有一个抽象方法的接口(即函数式接口)的实例. 2.当使用Lamb ...
- 如何使用IDEA将项目上传到GitHub中
上传之前先规定上传的格式: 1 . 以后所有上传的项目,都只上传 src文件集以及pom.xml文件,不要带有自己的 .idea配置文件或者target运行文件之类的(就算是测试文件也一样,从开始就养 ...
- HNUSTOJ-1689 送外卖(TSP问题)
1698: 送外卖 时间限制: 1 Sec 内存限制: 128 MB 提交: 115 解决: 24 [提交][状态][讨论版] 题目描述 在美团和饿了么大行其道的今天,囊中羞涩的小周和小美,也随大 ...
- [ZJOI2009]取石子游戏
瞪了题解两三天,直接下转第二篇题解就康懂了 首先我们令 : \(L[i][j]\) 表示当前 \([i,j]\) 区间左侧放置 \(L[i,j]\) 数量的石子后先手必败 \(R[i][j]\) 表示 ...
- 【Matlab技巧】工作区变量如何添加到Simulink中?
对新手来说,在进行simulink仿真时想把工作区的变量添加到Simulink中,这样在如transfer模块中使用时可以直接输变量即可. 如这样: 那么如何对Simulink仿真文件自动赋值呢? 1 ...
- C#中的==和Equals的区别
一,值类型中的比较,对于值类型,如果对象的值相等,则相等运算符 (==) 返回 true,否则返回 false. ; ; bool bi1 = ai.Equals(bi); //true bool b ...
- python学习笔记(7): 面向对象
class Foo: #类中的函数 def bar(self): #功能阐述 print('Bar') pass def hello(self,name): print('i am %s' %name ...
- 361-基于6U VPX TMS320C6678+XC7K325T 的信号处理板
基于6U VPX TMS320C6678+XC7K325T 的信号处理板 一.板卡概述 本板卡基于6U VPX结构设计无线电信号处理平台.板卡包含1片C6678芯片,1片 FPGA XC7K325T- ...
- JS删除对象中的某一属性(delete)
var obj= {} 1.JS对象添加新属性 obj.address="shenzhen" 2.JS删除对象中的某一属性(delete) var obj= { height: , ...
- CentOS7 systemctl 命令
*启动.重启.停止.重载服务 # systemctl start httpd.service # systemctl restart httpd.service # systemctl stop ht ...