js动态创建、删除表格示例代码


Posted in Javascript onAugust 07, 2013

生成一个2000*5的表格,每个单元格的内容是行号+逗号+列号

方法一:使用createElement生成表格,使用insertRow和insertCell方法生成行列,单元格的内容使用innerHTML属性进行填充。
方法二:使用createElement生成表格,使用CreateElement方法生成行列,单元格的内容使用了createTextNode方法填充。
方法三:拼接表格innerHTML属性的字符串,使用字符串 += 操作符链接字符串
方法四:拼接表格innerHTML属性的字符串,各个字符串追加数组里面,最后调用数组的join方法生成目标字符串。

运行时间比较:
方法 运行时间(ms)
方法一 93037
方法二 3341
方法三 2795
方法四 500

具体的程序如下:

<html> 
<head> 
<title>test page</title> 
<script type='text/javascript'> 
<!-- 
function createTable() { 
var t = document.createElement('table'); 
for (var i = 0; i < 2000; i++) { 
var r = t.insertRow(); 
for (var j = 0; j < 5; j++) { 
var c = r.insertCell(); 
c.innerHTML = i + ',' + j; 
} 
} 
document.getElementById('table1').appendChild(t); 
t.setAttribute('border', '1'); 
} 
function createTable2() { 
var t = document.createElement('table'); 
var b = document.createElement('tbody'); 
for (var i = 0; i < 2000; i++) { 
var r = document.createElement('tr'); 
for (var j = 0; j < 5; j++) { 
var c = document.createElement('td'); 
var m = document.createTextNode(i + ',' + j); 
c.appendChild(m); 
r.appendChild(c); 
} 
b.appendChild(r); 
} 
t.appendChild(b); 
document.getElementById('table1').appendChild(t); 
t.setAttribute('border', '1'); 
} 
function createTable3() { 
var data = ''; 
data += '<table border=1><tbody>'; 
for (var i = 0; i < 2000; i++) { 
data += '<tr>'; 
for (var j = 0; j < 5; j++) { 
data += '<td>' + i + ',' + j + '</td>'; 
} 
data += '</tr>'; 
} 
data += '</tbody><table>'; 
document.getElementById('table1').innerHTML = data; 
} 
function createTable4() { 
var data = new Array(); 
data.push('<table border=1><tbody>'); 
for (var i = 0; i < 2000; i++) { 
data.push('<tr>'); 
for (var j = 0; j < 5; j++) { 
data.push('<td>' + i + ',' + j + '</td>'); 
} 
data.push('</tr>'); 
} 
data.push('</tbody><table>'); 
document.getElementById('table1').innerHTML = data.join(''); 
} 
function showFunctionRunTime(f) { 
var t1 = new Date(); 
f(); 
var t2 = new Date(); 
alert(t2 - t1); 
} 
//--> 
</script> 
</head> 
<body> 
<div id="table1" style="border: 1px solid black"> 
</div> 
<script> 
showFunctionRunTime(createTable); 
showFunctionRunTime(createTable2); 
showFunctionRunTime(createTable3); 
showFunctionRunTime(createTable4); 
</script> 
</body> 
</html>

1、inserRow()和insertCell()函数

insertRow()函数可以带参数,形式如下:

insertRow(index)

这个函数将新行添加到index的那一行前,比如insertRow(0),是将新行添加到第一行之前。默认的insertRow()函数相当于insertRow(-1),将新行添加到表的最后。

insertCell()和insertRow的用法相同。

2、动态设置属性和事件

上面的innerHTML和innerText都是列的属性。

innerText是添加到<tb></tb>之间的文本,innerHTML是添加到<tb></tb>之间的HTML代码

设置其他属性也是用同样的方式,比如,设置行背景色

tr.bgColor = 'red';
设置colspan属性
td.colSpan = 3;


设置事件也一样,需要简单说明一点。

比如,我要让点击新加行的时候执行一个自己定义的函数 newClick,newClick函数如下:

function newClick(){

alert("这是新添加的行");


对onclick事件设置这个函数的代码如下:

tr.onclick = newClick;

这里需要主义的是,=后面的部分必须是函数名,而且不能带引号,

newTr.onclick = newClick();

newTr.onclick = 'newClick';

newTr.onclick = "newClick";

上面的写法都是错误的。

下面的写法,也是正确的

newTr.onclick = function newClick(){

alert("这是新添加的行");

}
动态删除表格
方法1:

<table id=mxh border=1> 
<tr> 
<td>第1行</td><td onclick="deleteRow('mxh',this.parentElement.rowIndex)">删除本行</td> 
</tr> 
<tr> 
<td>第2行</td><td onclick="deleteRow('mxh',this.parentElement.rowIndex)">删除本行</td> 
</tr> 
</table> 
<script> 
function deleteRow (tableID, rowIndex) { 
var table =document.all[tableID] 
table.deleteRow(rowIndex); 
} 
function getRowNum(tableID){ 
var tab = document.all[tableID] 
//表格行数 
var rows = tab.rows.length ; 
//表格列数 
var cells = tab.rows.item(0).cells.length ; 
} 
</script>

方法2:
<table id=mxh border=1> 
<tr> 
<td>第1行</td><td onclick="deleteRow(this.parentElement)">删除本行</td> 
</tr> 
<tr> 
<td>第2行</td><td onclick="deleteRow(this.parentElement)">删除本行</td> 
</tr> 
</table> 
<script> 
function deleteRow (obj) { 
obj.parentElement.removeChild(obj); 
} 
</script>
Javascript 相关文章推荐
非常好的js代码
Jun 27 Javascript
JavaScript 面向对象的 私有成员和公开成员
May 13 Javascript
javascript实现阻止iOS APP中的链接打开Safari浏览器
Jun 12 Javascript
JavaScript基于ajax编辑信息用法实例
Jul 15 Javascript
ionic js 复选框 与普通的 HTML 复选框到底有没区别
Jun 06 Javascript
Angularjs 实现分页功能及示例代码
Sep 14 Javascript
浅谈angular2的http请求返回结果的subcribe注意事项
Mar 01 Javascript
vue.js中Vue-router 2.0基础实践教程
May 08 Javascript
十大 Node.js 的 Web 框架(快速提升工作效率)
Jun 30 Javascript
解决vue admin element noCache设置无效的问题
Nov 12 Javascript
JS实现水平移动与垂直移动动画
Dec 19 Javascript
Vue事件处理原理及过程详解
Mar 11 Javascript
关于extjs4如何获取grid修改后的数据的问题
Aug 07 #Javascript
js取两个数组的交集|差集|并集|补集|去重示例代码
Aug 07 #Javascript
js使浏览器窗口最大化实现代码(适用于IE)
Aug 07 #Javascript
javascript一元操作符(递增、递减)使用示例
Aug 07 #Javascript
js 实现 input type=&quot;file&quot; 文件上传示例代码
Aug 07 #Javascript
uploadify在Firefox下丢失session问题的解决方法
Aug 07 #Javascript
firefox浏览器不支持innerText的解决方法
Aug 07 #Javascript
You might like
fleaphp常用方法分页之Pager使用方法
2011/04/23 PHP
php防止SQL注入详解及防范
2013/11/12 PHP
PHP将回调函数作用到给定数组单元的方法
2014/08/19 PHP
基于node.js的快速开发透明代理
2010/12/25 Javascript
jQuery中after的两种用法实例
2013/07/03 Javascript
from 表单提交返回值用post或者是get方法实现
2013/08/21 Javascript
JS数组的赋值介绍
2014/03/10 Javascript
javascript设计模式--策略模式之输入验证
2015/11/27 Javascript
javascript实现C语言经典程序题
2015/11/29 Javascript
AngularJS仿苹果滑屏删除控件
2016/01/18 Javascript
详解nodeJS中读写文件方法的区别
2017/03/06 NodeJs
原生JS实现隐藏显示图片 JS实现点击切换图片效果
2021/01/27 Javascript
使用vue-router为每个路由配置各自的title
2018/07/30 Javascript
element-ui 上传图片后清空图片显示的实例
2018/09/04 Javascript
微信小程序实现星星评分效果
2020/11/01 Javascript
[01:04:01]2014 DOTA2华西杯精英邀请赛5 24 DK VS VG
2014/05/25 DOTA
Python实现二分查找算法实例
2015/05/26 Python
Python3.6实现连接mysql或mariadb的方法分析
2018/05/18 Python
Python多继承原理与用法示例
2018/08/23 Python
Django跨域请求CSRF的方法示例
2018/11/11 Python
python实现列表的排序方法分享
2019/07/01 Python
python爬虫增加访问量的方法
2019/08/22 Python
python的pyecharts绘制各种图表详细(附代码)
2019/11/11 Python
查看keras各种网络结构各层的名字方式
2020/06/11 Python
魔幻般冒泡背景的CSS3按钮动画
2016/02/27 HTML / CSS
Vans澳大利亚官网:购买鞋子、服装及配件
2019/09/05 全球购物
工商管理专业实习生自我鉴定
2013/09/29 职场文书
医学院学生的自我评价分享
2013/11/19 职场文书
大学生就业求职信
2014/06/12 职场文书
委托书怎么写
2014/07/31 职场文书
政治学专业毕业生求职信
2014/08/11 职场文书
2014年机关党建工作总结
2014/11/11 职场文书
工会积极分子个人总结
2015/03/03 职场文书
2015年学校办公室工作总结
2015/05/26 职场文书
互联网的下一个风口:新的独角兽将诞生
2019/08/02 职场文书
浅谈Node的内存泄露问题
2022/05/06 NodeJs