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

一.操作表格

<table>标签是HTML中结构最为复杂的一个,我们可以通过DOM来创建生成它,或者HTML DOM来操作它。(PS:HTML DOM提供了更加方便快捷的方式来操作HTML,有手册)

html代码部分:

//需要操作的table

 <table border="1" width="300">

        <caption>人员表</caption>

        <thead>

               <tr>

                      <th>姓名</th>

                      <th>性别</th>

                      <th>年龄</th>

               </tr>

        </thead>

        <tbody>

               <tr>

                      <td>张三</td>

                      <td>男</td>

                      <td>20</td>

               </tr>

               <tr>

                      <td>李四</td>

                      <td>女</td>

                      <td>22</td>

               </tr>

        </tbody>

        <tfoot>

               <tr>

                      <td colspan="3">合计:N</td>

               </tr>

        </tfoot>

 </table>

注意:caption标签在一个表格里只有一个

   thead标签在一个表格里只能有一个

tfoot标签在一个表格里只能有一个

tbody标签在一个表格里可以有N个

tr,td和th标签在一个表格里可以有N个

JS代码部分:

 //使用DOM来创建这个表格

        var table = document.createElement('table');

        table.border = 1;

        table.width = 300;

        var caption = document.createElement('caption');

        table.appendChild(caption);

        caption.appendChild(document.createTextNode('人员表'));

        var thead = document.createElement('thead');

        table.appendChild(thead);

        var tr = document.createElement('tr');

        thead.appendChild(tr);

        var th1 = document.createElement('th');

        var th2 = document.createElement('th');

        var th3 = document.createElement('th');

        tr.appendChild(th1);

        th1.appendChild(document.createTextNode('姓名'));

        tr.appendChild(th2);

        th2.appendChild(document.createTextNode('性别'));

        tr.appendChild(th3);

        th3.appendChild(document.createTextNode('年龄'));  

        document.body.appendChild(table);

PS:使用DOM来创建表格其实已经没有什么难度,就是有点儿麻烦而已。

下面我们再使用HTML DOM来获取和创建这个相同的表格。

HTML DOM中,给这些元素标签提供了一些属性和方法

属性或方法

说明

caption

保存着<caption>元素的引用

tBodies

保存着<tbody>元素的HTMLCollection集合

tFoot

保存着对<tfoot>元素的引用

tHead

保存着对<thead>元素的引用

rows

保存着对<tr>元素的HTMLCollection集合

createTHead()

创建<thead>元素,并返回引用

createTFoot()

创建<tfoot>元素,并返回引用

createCaption()

创建<caption>元素,并返回引用

deleteTHead()

删除<thead>元素

deleteTFoot()

删除<tfoot>元素

deleteCaption()

删除<caption>元素

deleteRow(pos)

删除指定的行

insertRow(pos)

向rows集合中的指定位置插入一行

<tbody>元素添加的属性和方法

属性或方法

说明

rows

保存着<tbody>元素中的HTMLCollection

deleteRow(pos)

删除指定位置的行

insertRow(pos)

向rows集合中的指定位置插入一行,并返回引用

<tr>元素添加的属性和方法

属性或方法

说明

cells

保存着<tr>元素中单元格的HTMLCollection

deleteCell(pos)

删除指定位置的单元格

insertCell(pos)

向cells集合的指定位置插入一个单元格,并返回引用

PS:因为表格较为繁杂,层次也多,在使用之前所学习的DOM来获取某个元素会非常难受,所以使用HTML DOM会清晰很多。

//使用HTML DOM来获取表格元素

  var table = document.getElementsByTagName('table')[0];   //获取table引用

//按照之前的DOM节点方法获取<caption>

  alert(table.children[0].innerHTML);                   //获取caption的内容

PS:这里使用了children[0]本身就忽略了空白,如果使用firstChild或者childNodes[0]需要更多的代码(基础篇中的去处空白文本节点代码)

//按HTML DOM来获取表格的<caption>

alert(table.caption.innerHTML);                         //获取caption的内容

//按HTML DOM来获取表头表尾<thead>、<tfoot>

alert(table.tHead);                                            //获取表头

alert(table.tFoot);                                             //获取表尾

//按HTML DOM来获取表体<tbody>

  alert(table.tBodies);                                                 //获取表体的集合

PS:因为在一个表格中<thead>和<tfoot>是唯一的,只能有一个。而<tbody>不是唯一的可以有多个,这样导致最后返回的<thead>和<tfoot>是元素引用,而<tbody>返回的是元素集合。

//按HTML DOM来获取表格的行数

  alert(table.rows.length);                                          //获取行数的集合,数量

//按HTML DOM来获取表格主体(tbody)里的行数

  alert(table.tBodies[0].rows.length);                   //获取主体的行数的集合,数量

//按HTML DOM来获取表格主体内第一行的单元格数量(tr)

  alert(table.tBodies[0].rows[0].cells.length);         //获取第一行单元格的数量

//按HTML DOM来获取表格主体内第一行第一个单元格的内容(td)

  alert(table.tBodies[0].rows[0].cells[0].innerHTML);    //获取第一行第一个单元格的内容

//按HTML DOM来删除标题、表头、表尾、行、单元格

table.deleteCaption();                                      //删除标题

table.deleteTHead();                                        //删除<thead>

table.tBodies[0].deleteRow(0);                          //删除<tr>一行

table.tBodies[0].rows[0].deleteCell(0);               //删除<td>一个单元格

//按HTML DOM创建一个表格     

 var table = document.createElement('table');

        table.border = 1;

        table.width = 300;

        table.createCaption().innerHTML = '人员表';

        //table.createTHead(); 

15     //table.tHead就表示返回thead的引用,但不建议这么做,会混淆

        //table.tHead.insertRow(0);

        var thead = table.createTHead();

        var tr = thead.insertRow(0);

        var td1 = tr.insertCell(0);

        td1.appendChild(document.createTextNode('数据1'));

        var td2 = tr.insertCell(1);

        td2.appendChild(document.createTextNode('数据2'));

        /*或者

        var tr = thead.insertRow(0);

        tr.insertCell(0).innerHTML = '数据1';

        tr.insertCell(1).innerHTML = '数据2';

        tr.insertCell(2).innerHTML = '数据3';

        */

        document.body.appendChild(table);

PS:在创建表格的时候<table>、<tbody>、<th>没有特定的方法,需要使用document来创建。也可以模拟已有的方法来编写特定的函数即可,例如:insertTH()之类的。

 

DOM系列---DOM操作表格的更多相关文章

  1. DOM系列---DOM操作样式

    发文不易,若转载传播,请亲注明出处,谢谢! 一.操作样式 CSS作为(X)HTML的辅助,可以增强页面的显示效果.但不是每个浏览器都能支持最新的CSS能力.CSS的能力和DOM级别密切相关,所以我们有 ...

  2. DOM系列---DOM获取尺寸和位置

    内容提纲: 1.获取元素CSS大小 2.获取元素实际大小 3.获取元素周边大小 本篇我们主要讨论一下页面中的某一个元素它的各种大小和各种位置的计算方式. 一.获取元素CSS大小 1.通过style获取 ...

  3. DOM操作表格

    前面的话 表格table元素是HTML中最复杂的结构之一.要想创建表格,一般都必须涉及表示表格行.单元格.表头等方面的标签.由于涉及的标签多,因而使用核心DOM方法创建和修改表格往往都免不了要编写大量 ...

  4. DOM操作--表格点击行变色

    点击表格行变色,这种网页效果应该还是比较常见的.大家应该看见了,我这里的效果是用DOM操作实现的,那么很多人会问什么是DOM操作,贴出代码之前我就和大家解释一下什么是DOM操作: DOM是Docume ...

  5. 第一百一十五节,JavaScript,DOM操作表格

    JavaScript,DOM操作表格 学习要点: 1.操作表格 DOM在操作生成HTML上,还是比较简明的.不过,由于浏览器总是存在兼容和陷阱,导致最终的操作就不是那么简单方便了.本章主要了解一下DO ...

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

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

  7. Javascript高级编程学习笔记(45)——DOM 操作表格及DOM动态集合

    操作DOM表格 早些时候,HTML 还是以表格布局为主, 所以DOM操作表格是比较重要的一点 但是现如今 有其它的选择,所以表格的操作也就慢慢地淡出了人们的视线 所以这里也就不过多去详细展开,这里也就 ...

  8. DOM 操作表格

    操作表格<table>标签是 HTML 中结构最为复杂的一个,我们可以通过 DOM 来创建生成它,或者 HTML DOM 来操作它.(PS:HTML DOM 提供了更加方便快捷的方式来操作 ...

  9. DOM系列---基础篇

    DOM系列---基础篇   DOM (Document Object Model) 即文档对象模型, 针对 HTML 和 XML 文档的 API (应用程序接口) .DOM 描绘了一个层次化的节点树, ...

随机推荐

  1. Keepalived高可用集群搭建(转载linuxIDC)

    1.Keepalived简介 Keepalived是一个基于VRRP协议来实现的WEB服务高可用方案,可以利用其来避免单点故障.使用多台节点安装keepalived.其 他的节点用来提供真实的服务,同 ...

  2. 解决在iOS8环境下,当用户关闭定位服务总开关时,无法将APP定位子选项加入定位权限列表的问题

    关键点:- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizati ...

  3. js立即执行函数: (function ( ){...})( ) 与 (function ( ){...}( )) 有区别?

    没有区别. 你需要明白 IIFE 的原理,我简单说一下: function foo() {...} // 这是定义,Declaration:定义只是让解释器知道其存在,但是不会运行. foo(); / ...

  4. BZOJ 2186 [Sdoi2008]沙拉公主的困惑 【逆元】

    题意:求中互质的数的个数,其中. 分析:因为,所以,我们很容易知道如下结论    对于两个正整数和,如果是的倍数,那么中与互素的数的个数为      本结论是很好证明的,因为中与互素的个数为,又知道, ...

  5. HDU 1565 最大点权独立集

    首先要明白图论的几个定义: 点覆盖.最小点覆盖: 点覆盖集即一个点集,使得所有边至少有一个端点在集合里.或者说是“点” 覆盖了所有“边”.. 最小点覆盖(minimum vertex covering ...

  6. 保存带有emoji的文本报错解决方案

    今天偶然遇到一个错误,就是保存文本的时候带有了emoji表情,报错了 java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x8A\ ...

  7. 权限框架 - shiro 简单入门实例

    前面的帖子简单的介绍了基本的权限控制,可以说任何一个后台管理系统都是需要权限的 今天开始咱们来讲讲Shiro 首先引入基本的jar包 <!-- shiro --> <dependen ...

  8. 纯js和纯css+html制作的手风琴的效果

    一:纯css+html的手风琴效果 这种用css写的手风琴比较简单,主要是应用到css中的,transition属性. 代码如下: <!DOCTYPE HTML> <html> ...

  9. JavaWeb学习----http协议

    一.什么是HTTP协议: 1.概念: 客户端连上web服务器后,若想获得web服务器中的某个web资源,需遵守一定的通讯格式,HTTP协议用于定义客户端与web服务器通迅的格式(规定客户端和服务器如何 ...

  10. AC日记——过河卒 洛谷 1002

    题目描述 棋盘上A点有一个过河卒,需要走到目标B点.卒行走的规则:可以向下.或者向右.同时在棋盘上C点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点.因此称之为“马拦过河卒”. ...