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中将URL中的参数提取出来作为对象的实现代码
Aug 16 Javascript
初识SmartJS - AOP三剑客
Jun 08 Javascript
jquery mobile界面数据刷新的实现方法
May 28 Javascript
jQuery代码性能优化的10种方法
Jun 21 Javascript
Bootstrap模态框水平垂直居中与增加拖拽功能
Nov 09 Javascript
jquery滚动条插件(可以自定义)
Dec 11 Javascript
Js实现中国公民身份证号码有效性验证实例代码
May 03 Javascript
JavaScript与Java正则表达式写法的区别介绍
Aug 15 Javascript
js实现移动端轮播图效果
Dec 09 Javascript
详解wow.js中各种特效对应的类名
Sep 13 Javascript
jquery一键控制checkbox全选、反选或全不选
Oct 16 jQuery
利用Angular2的Observables实现交互控制的方法
Dec 27 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
Apache 配置详解(最好的APACHE配置教程)
2010/07/04 PHP
采集邮箱的php代码(抓取网页中的邮箱地址)
2012/07/17 PHP
Sample script that deletes a SQL Server database
2007/06/16 Javascript
用Javascript数组处理多个字符串的连接问题
2009/08/20 Javascript
jQuery验证Checkbox是否选中的代码 推荐
2011/09/04 Javascript
一个背景云变换js特效 鼠标移动背景云变化
2012/12/28 Javascript
jquery中的$(document).ready()使用小结
2014/02/14 Javascript
javascript下拉列表中显示树形菜单的实现方法
2015/11/17 Javascript
js操作cookie保存浏览记录的方法
2015/12/25 Javascript
Javascript表单特效之十大常用原理性样例代码大总结
2016/07/12 Javascript
js判断请求的url是否可访问,支持跨域判断的实现方法
2016/09/17 Javascript
nodejs中使用HTTP分块响应和定时器示例代码
2017/03/19 NodeJs
jquery Ajax实现Select动态添加数据
2017/06/08 jQuery
前端主流框架vue学习笔记第二篇
2017/07/26 Javascript
JS中使用textPath实现线条上的文字
2017/12/25 Javascript
基于vue,vue-router, vuex及addRoutes进行权限控制问题
2018/05/02 Javascript
微信小程序实现的图片保存功能示例
2019/04/24 Javascript
使用axios发送post请求,将JSON数据改为form类型的示例
2019/10/31 Javascript
jQuery表单校验插件validator使用方法详解
2020/02/18 jQuery
jQuery+ThinkPHP实现图片上传
2020/07/23 jQuery
uniapp实现可以左右滑动导航栏
2020/10/21 Javascript
[13:38]2015国际邀请赛中国战队出征仪式
2015/05/29 DOTA
python处理中文编码和判断编码示例
2014/02/26 Python
python的即时标记项目练习笔记
2014/09/18 Python
python PyTorch预训练示例
2018/02/11 Python
Python定时任务工具之APScheduler使用方式
2019/07/24 Python
Python udp网络程序实现发送、接收数据功能示例
2019/12/09 Python
用python打开摄像头并把图像传回qq邮箱(Pyinstaller打包)
2020/05/17 Python
Keras: model实现固定部分layer,训练部分layer操作
2020/06/28 Python
海蓝之谜(LA MER)澳大利亚官方商城:全球高端奢华护肤品牌
2017/10/27 全球购物
维多利亚的秘密官方旗舰店:VICTORIA’S SECRET
2018/04/02 全球购物
Black Halo官方网站:购买连衣裙、礼服和连体裤
2018/06/13 全球购物
大专计算机个人求职的自我评价
2013/10/21 职场文书
民事诉讼授权委托书范文
2014/08/02 职场文书
销售顾问工作计划书
2014/08/15 职场文书
中小学生学籍证明
2014/10/25 职场文书