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 相关文章推荐
用于table内容排序
Jul 21 Javascript
JavaScript高级程序设计(第3版)学习笔记5 js语句
Oct 11 Javascript
js实现倒计时(距离结束还有)示例代码
Jul 24 Javascript
jqgrid 编辑添加功能详细解析
Nov 08 Javascript
使用纯javascript实现放大镜效果
Mar 18 Javascript
js实现的奥运倒计时时钟效果代码
Dec 09 Javascript
手机端转换rem适应
Apr 01 Javascript
JS打印彩色菱形的实例代码
Aug 15 Javascript
vue多次循环操作示例
Feb 08 Javascript
微信小程序实现收货地址左滑删除
Nov 18 Javascript
Vue实现点击显示不同图片的效果
Aug 10 Javascript
在Uni中使用Vue的EventBus总线机制操作
Jul 31 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系统命令函数使用分析
2013/07/05 PHP
PHP中使用循环实现的金字塔图形
2014/11/08 PHP
php中目录操作opendir()、readdir()及scandir()用法示例
2019/06/08 PHP
PHP设计模式(六)桥连模式Bridge实例详解【结构型】
2020/05/02 PHP
javascript操作cookie_获取与修改代码
2009/05/21 Javascript
jquery与google map api结合使用 控件,监听器
2010/03/04 Javascript
用jquery实现下拉菜单效果的代码
2010/07/25 Javascript
5个可以帮你理解JavaScript核心闭包和作用域的小例子
2014/10/08 Javascript
JavaScript设计模式之单件模式介绍
2014/12/28 Javascript
jQuery实现复选框成对选择及对应取消的方法
2015/03/03 Javascript
JQuery异步加载PartialView的方法
2016/06/07 Javascript
JavaScript实现多栏目切换效果
2016/12/12 Javascript
Bootstrap select下拉联动(jQuery cxselect)
2017/01/04 Javascript
JS删除数组里的某个元素方法
2018/02/03 Javascript
基于vue通用表单解决方案的思考与分析
2019/03/16 Javascript
Vue3为什么这么快
2020/09/23 Javascript
vue element和nuxt的使用技巧分享
2021/01/14 Vue.js
Python 文件处理注意事项总结
2017/04/10 Python
Python基于更相减损术实现求解最大公约数的方法
2018/04/04 Python
python微信公众号之关注公众号自动回复
2018/10/25 Python
Python3.7 读取 mp3 音频文件生成波形图效果
2019/11/05 Python
python实现while循环打印星星的四种形状
2019/11/23 Python
python怎么调用自己的函数
2020/07/01 Python
如何使用pycharm连接Databricks的步骤详解
2020/09/23 Python
微软英国官方网站:Microsoft英国
2016/10/15 全球购物
如何在Cookie里面保存Unicode和国际化字符
2013/05/25 面试题
车间副主任岗位职责
2013/12/24 职场文书
远程研修随笔感言
2014/02/10 职场文书
红旗方阵解说词
2014/02/12 职场文书
双方协议书
2014/04/22 职场文书
体育教师求职信
2014/05/24 职场文书
迎新晚会策划方案
2014/06/13 职场文书
2014年人事专员工作总结
2014/11/19 职场文书
经理岗位职责
2015/02/02 职场文书
安全生产先进个人总结
2015/02/15 职场文书
python 判断文件或文件夹是否存在
2022/03/18 Python