转行学开发,代码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的操作应用(一)的更多相关文章

  1. day37—javascript对表格table的操作应用(二)

    转行学开发,代码100天——2018-04-22 昨天学习了JavaScript对table的基本操作,包括表格的创建,表格元素的获取,隔行换色及鼠标动作等.今天主要学习table的搜索查询及排序操作 ...

  2. jQuery动态对表格Table进行添加或删除行以及修改列值操作

    jQuery,不仅可以以少量的代码做很多操作,而且兼容性好(各种浏览器,各种版本). 下面用jQuery动态对表格Table进行添加或删除行以及修改列值操作 1.jQuery代码 <script ...

  3. JavaScript(第二十天)【DOM操作表格及样式】

    DOM在操作生成HTML上,还是比较简明的.不过,由于浏览器总是存在兼容和陷阱,导致最终的操作就不是那么简单方便了.本章主要了解一下DOM操作表格和样式的一些知识. 一.操作表格 <table& ...

  4. 使用 iview Table 表格组件修改操作的显示隐藏

    使用 iview Table 表格组件修改操作的显示隐藏,如下图 1.如何设置 table 操作按后台传入的状态值去渲染 不同的按钮? 解决方法 我们在vue2中,动态渲染html 使用的是 retu ...

  5. 采用DOM进行表格的修改操作

    2015-08-31 <html> <head> <title>采用DOM进行表格的修改操作</title> <script language=& ...

  6. JavaScript 实现表格隔行变色

    JavaScript 实现表格隔行变色 版权声明:未经授权,严禁分享! 构建界面 界面HTML代码 <style> #data,th,td{ border: 1px solid #aaaa ...

  7. jQuery 选择表格(table)里的行和列及改变简单样式

    本文只是介绍如何用jQuery语句对表格中行和列进行选择以及一些简单样式改变,希望它可以对jQuery表格处理的深层学习提供一些帮助jQuery对表格(table)的处理提供了相当强大的功能,比如说对 ...

  8. javascript生成表格增删改查 JavaScript动态改变表格单元格内容 动态生成表格 JS获取表格任意单元格 javascript如何动态删除表格某一行

    jsp页面表格布局Html代码 <body onload="show()"> <center> <input type="text" ...

  9. JavaScript创建表格的两种方式

    方式一: var data = [ { id: 1, name: "first", age: 12 }, { id: 2, name: "second", ag ...

随机推荐

  1. 15 (H5*) JS第5天 对象

    目录 1:创建对象 2:工厂模式创建对象 3:自定义构造函数创建对象 4:自定义构造函数做了那些事情 5:字面量方式创建对象:一次性对象 6:对象总结 7:json数据类型 8:简单数据类型和复杂数据 ...

  2. 在SSIS 的 64 位版本中不支持 Excel 连接管理器[转]

    Microsoft sql server 2008 R2——> SQL SERVER Business Intelligence Development Studio 使用EXCEL数据源或目标 ...

  3. Python 内置函数raw_input()和input()用法和区别

    我们知道python接受输入的raw_input()和input() ,在python3 输入raw_input() 去掉乐,只要用input() 输入,input 可以接收一个Python表达式作为 ...

  4. Dubbo一文入门

    一.简介 系统的架构,已从最早的单体式架构(一个war包完事)逐渐发展到目前的微服务式架构.微服务,将一个大型的复杂的应用系统,拆分成若干独立的松耦合的小的服务工程,每个服务工程可独立部署,每个服务只 ...

  5. LeetCode106. 从中序与后序遍历序列构造二叉树

    106. 从中序与后序遍历序列构造二叉树 描述 根据一棵树的中序遍历与后序遍历构造二叉树. 注意: 你可以假设树中没有重复的元素. 示例 例如,给出 中序遍历 inorder = [9,3,15,20 ...

  6. 【JAVA】eclipse里代码整个前移或者后移的快捷键

    一整块后移是:选中按 tab 一整块前移是:选中按 shift+tab

  7. JavaScript数组为什么是对象

    有过PHP编程经验的程序员学习JavaScript的时候,会发现数组也是对象,这和PHP是不同的,在PHP中数组就是数组类型,并不是是对象.究竟为什么在JavaScript中数组会是对象呢? var ...

  8. tomcat启动报错:Neither the JAVA_HOME nor the JRE_HOME environment variable is defined

      windows系统: 部署了一个Tomcat8.5.15,bin目录下startup.bat执行,结果提示Neither the JAVA_HOME nor the JRE_HOME enviro ...

  9. NOIP原题板刷

    update 10.11 我可能已经刷完大部分了,可是这篇blog我也不想更了 这个人很懒,做了很多题但是不想写题解,也不想更blog,所以这篇blog又咕咕了. 把从 \(1997-2017\) 近 ...

  10. CentOS安装Git服务器 Centos 6.5 + Git 1.7.1.0 + gitosis

    1.安装扩展 yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel 2.下载git ...