<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>用DOM动态控制表格</title>
</head>
<body>
<script language="javascript">
counter = 1;
// 插入数据
function insertData()
{
var oStudentsTable = document.getElementById("students");
var oTrHang = oStudentsTable.insertRow(oStudentsTable.rows.length); //插入一行
var aText = new Array();
aText[0] = document.createTextNode("王" + (counter++));
aText[1] = document.createTextNode("B072");
aText[2] = document.createTextNode("女");
aText[3] = document.createTextNode("1025");
aText[4] = document.createTextNode("13663616963");
for(var i=0; i<aText.length; i++)
{
var oTd = oTrHang.insertCell(i); //插入一个单元格
oTd.appendChild(aText[i]);
}
}
// 编辑单元格数据
function editData()
{
var oTable = document.getElementById("students");
oTable.rows[1].cells[0].innerHTML += "Chf";
}
//添加删除数据的列
function insertDeleteCell()
{
var oTable = document.getElementById("students");
var oTh = oTable.rows[0].insertCell(oTable.rows[0].cells.length);
oTh.innerHTML = "<font style='font-weight: bold;'>操作</font>";
for(var i=1; i<oTable.rows.length; i++)
{
var oTd = oTable.rows[i].insertCell(oTable.rows[i].cells.length);
oTd.innerHTML = "<a href='#' onclick='myDeleteRow(this)'>Delete</a>";
}
}
//添加拥有一个输入框的列
function insertInputCell() {
var oTable = document.getElementById("students");
var oTh = oTable.rows[0].insertCell(oTable.rows[0].cells.length);
oTh.innerHTML = "<font style='font-weight: bold;'>输入</font>";
for(var i=1; i<oTable.rows.length; i++)
{
var oTd = oTable.rows[i].insertCell(oTable.rows[i].cells.length);
oTd.innerHTML = "<input type=\"text\" style=\"background:#C0F2F3;margin-left:8px;width:10px;height:10px;\" />"
}
}
//删除行
function myDeleteRow(theDel)
{
theDel.parentNode.parentNode.parentNode.removeChild(theDel.parentNode.parentNode);
}
//删除所有行
function deleteAllRows()
{
var studentsTable = document.getElementById("students");
while(studentsTable.rows.length > 1)
{
studentsTable.deleteRow(studentsTable.rows.length - 1);
}
}
//对表格的行进行排序
function sortByBirthday()
{
var studentsTable = document.getElementById("students");
// 获取所有学生数据行
/**
var studentsRowsData = new Array();
for(var i=1; i<studentsTable.rows.length; i++)
{
// 以这种方式获取表格的所有行,但是通过deleteRow方法删除表格的行,会导致获取的行成为空行<tr></tr>
// studentsRowsData[i-1] = studentsTable.rows[i];
}
**/
var studentsRows = new Array();
for(var i=1; i<studentsTable.rows.length; i++)
{
studentsRows[i-1] = studentsTable.rows[i];
} // ---------- 排序 Begin ----------
for(var i=0; i<studentsRows.length-1; i++)
{
for(var j=i+1; j<studentsRows.length; j++)
{
var iBirth = Number(studentsRows[i].cells[3].firstChild.nodeValue);
var jBirth = Number(studentsRows[j].cells[3].firstChild.nodeValue);
if(iBirth > jBirth)
{
var temp = studentsRows[i];
studentsRows[i] = studentsRows[j];
studentsRows[j] = temp;
}
}
} // ---------- 排序 End ---------- /**
// 删除表格中的所有学生数据行,保留行首
while(studentsTable.rows.length > 1)
{
studentsTable.deleteRow(studentsTable.rows.length - 1);
}
**/ var studentsSortedTable = document.getElementById("students_sorted");
// 先清空存放排序后学生信息的表格
while(studentsSortedTable.rows.length > 1)
{
studentsSortedTable.deleteRow(studentsSortedTable.rows.length - 1);
}
for(var i=0; i<studentsRows.length; i++)
{
var newRow = studentsSortedTable.insertRow(studentsSortedTable.rows.length);
var sortedCells = studentsRows[i].cells;
for(var j=0; j<sortedCells.length; j++)
{
var newCell = newRow.insertCell(newRow.cells.length);
newCell.innerHTML = sortedCells[j].innerHTML;
}
}
studentsSortedTable.style.display = "inline";
}
</script>
<h3>用DOM动态控制表格</h3>
<input type="button" onclick="insertData()" value="插入一行数据" />
<input type="button" onclick="editData()" value="修改单元格数据" />
<input type="button" onclick="insertDeleteCell()" value="动态添加删除列" />
<input type="button" onclick="insertInputCell()" value="动态添加输入框列" />
<input type="button" onclick="deleteAllRows()" value="删除所有行保留行首" />
<input type="button" onclick="sortByBirthday()" value="按生日进行排序" />
<p></p> <table id="students" border="1">
<caption>
<h3>学生列表</h3>
</caption>
<tr>
<th scope="col">姓名</th>
<th scope="col">学号</th>
<th scope="col">性别</th>
<th scope="col">生日</th>
<th scope="col">联系方式</th>
</tr>
<tr>
<td>陈</td>
<td>B073</td>
<td>男</td>
<td>1126</td>
<td>15915554615</td>
</tr>
<tr>
<td>王</td>
<td>B071</td>
<td>女</td>
<td>0304</td>
<td>13054115694</td>
</tr>
<tr>
<td>曹</td>
<td>B070</td>
<td>男</td>
<td>0815</td>
<td>1381377894</td>
</tr>
<tr>
<td>郑</td>
<td>B078</td>
<td>男</td>
<td>1019</td>
<td>1322377896</td>
</tr>
</table>
<p></p>
<table id="students_sorted" border="1" style="display:none">
<caption>
<h3>排序后的学生列表</h3>
</caption>
<tr>
<th scope="col">姓名</th>
<th scope="col">学号</th>
<th scope="col">性别</th>
<th scope="col">生日</th>
<th scope="col">联系方式</th>
</tr>
</table>
</body>
</html>

用DOM动态控制表格的更多相关文章

  1. DOM操作表格

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

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

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

  3. DOM系列---DOM操作表格

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

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

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

  5. DOM操作表格——HTML DOM

    html创建表格: <table berder='1' width='300'> <thead> <tr> <th>姓名</th> < ...

  6. DOM拓展表格小练习

    涉及的知识点 DOM操作HTML页面.DOM操控表格.一些基本的事件.遍历知识.数组字符串知识.函数的作用域知识 效果图 html代码 <body><div id="con ...

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

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

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

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

  9. DOM中表格的操作方法总结

    DOM中表格的操作方法总结 <table/>元素的方法如下: caption:指向<caption/>元素(如果存在): tBodies:<tbody/>元素的集合 ...

随机推荐

  1. POJ 3696

    这里面的一个转换的小技巧很重要,把888...8转换成(10^x-1)/9*8.神来之笔,佩服. 这样有(10^x-1)/9*8=L*p得10^x-1=L*p*9/8,设m=9*L/gcd(L,8). ...

  2. POJ3624 Charm Bracelet 【01背包】

    Charm Bracelet Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 22621   Accepted: 10157 ...

  3. [ES2018] Two ways to write for-await-of

    // Asynchronous iteration --> Symbol.asyncIterator async function main() { const syncIterable = [ ...

  4. Java类载入器

    1.   系统载入器简单介绍 Java虚拟机中能够安装多个类载入器,系统默认三个主要类载入器(BootStrap.ExtClassLoader.AppClassLoader).每一个类载入器负责载入特 ...

  5. node 内存消息队列

    var net = require('net') var clients = [] ,msgs = {} function unWrapMsg(data){ data = data.toString( ...

  6. srw阅读笔记

    第一章 p11,不要使用we来代表普遍意义上的人们,使用形式主语和被动语态

  7. spark学习及环境配置

    http://dblab.xmu.edu.cn/blog/spark/ 厦大数据库实验室博客 总结.分享.收获 实验室主页 首页 大数据 数据库 数据挖掘 其他 子雨大数据之Spark入门教程  林子 ...

  8. CodeForces ---596B--Wilbur and Array(贪心模拟)

    Wilbur and Array Time Limit: 2000MS   Memory Limit: 262144KB   64bit IO Format: %I64d & %I64u Su ...

  9. jQuery ajax在IE浏览器的跨域问题--jquery.xdomainrequest.min.js

    jquery.ajax 加载数据, chrome, firefox, IE10+ 都可以顺利加载数据,但是IE9及以后版本不执,通过执行 jquery.ajax error 函数显示未执行 拒绝访问. ...

  10. 三个获取浏览器URL中参数值的方法

    这三个是一般的获取浏览器传的参数值的方法,之前有用unescape()解码的方法,但是遇到汉字会产生乱码,所以用decodeURI(); 方法一: function getQueryString(na ...