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 相关文章推荐
Jquery对select的增、删、改、查操作
Feb 06 Javascript
JavaScript声明变量名的语法规则
Jul 10 Javascript
javascript中caller和callee详解
Aug 10 Javascript
JS拖拽组件学习使用
Jan 19 Javascript
js格式化时间的简单实例
Nov 27 Javascript
React服务端渲染(总结)
Jul 01 Javascript
利用纯js + transition动画实现移动端web轮播图详解
Sep 10 Javascript
jQuery图片加载失败替换默认图片方法汇总
Nov 29 jQuery
微信小程序实现自定义picker选择器弹窗内容
May 26 Javascript
微信小程序使用map组件实现路线规划功能示例
Jan 22 Javascript
JS中的算法与数据结构之链表(Linked-list)实例详解
Aug 20 Javascript
JavaScript闭包相关知识解析
Oct 19 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
PHP动态页生成静态页的3种常用方法
2014/11/13 PHP
php语言的7种基本的排序方法
2020/12/28 PHP
php实现获取近几日、月时间示例
2019/07/06 PHP
Laravel基础_关于view共享数据的示例讲解
2019/10/14 PHP
用javascript获取地址栏参数
2006/12/22 Javascript
javascript 数据类型转换(parseInt,parseFloat)
2010/07/20 Javascript
js字符编码函数区别分析
2011/12/28 Javascript
javascript移动设备Web开发中对touch事件的封装实例
2014/06/05 Javascript
node.js中的fs.createWriteStream方法使用说明
2014/12/17 Javascript
jQuery实现简单的网页换肤效果示例
2016/09/18 Javascript
vue proxyTable 接口跨域请求调试的示例
2017/09/12 Javascript
vue二级路由设置方法
2018/02/09 Javascript
node内置调试方法总结
2018/02/22 Javascript
Express之托管静态文件的方法
2018/06/01 Javascript
详解关于Vue2.0路由开启keep-alive时需要注意的地方
2018/09/18 Javascript
Node.js中Koa2在控制台输出请求日志的方法示例
2019/05/02 Javascript
vue-router两种模式区别及使用注意事项详解
2019/08/01 Javascript
layui自定义工具栏的方法
2019/09/19 Javascript
小程序如何自主实现拦截器的示例代码
2019/11/04 Javascript
JavaScript中的this妙用实例分析
2020/05/09 Javascript
基于JS实现计算24点算法代码实例解析
2020/07/23 Javascript
Python实现带参数的用户验证功能装饰器示例
2018/12/14 Python
python函数不定长参数使用方法解析
2019/12/14 Python
Python爬虫库BeautifulSoup获取对象(标签)名,属性,内容,注释
2020/01/25 Python
Python类继承和多态原理解析
2020/02/05 Python
python+selenium 简易地疫情信息自动打卡签到功能的实现代码
2020/08/22 Python
Python实现给PDF添加水印的方法
2021/01/25 Python
汤米巴哈马官方网站:Tommy Bahama
2017/05/13 全球购物
财务总经理岗位职责
2014/02/16 职场文书
数据保密承诺书
2014/06/03 职场文书
机电一体化毕业生自荐信
2014/06/19 职场文书
员工家属慰问信
2015/03/24 职场文书
装饰技术负责人岗位职责
2015/04/13 职场文书
《詹天佑》教学反思
2016/02/20 职场文书
Java中PriorityQueue实现最小堆和最大堆的用法
2021/06/27 Java/Android
Nginx实现会话保持的两种方式
2022/03/18 Servers