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实现的一个选择中国大学的弹框 (数据、步骤、代码)
Jul 26 Javascript
深入理解JavaScript高级之词法作用域和作用域链
Dec 10 Javascript
iframe如何动态创建及释放其所占内存
Sep 03 Javascript
javascript动态创建链接的方法
May 13 Javascript
Javascript中的getUTCHours()方法使用详解
Jun 10 Javascript
基于insertBefore制作简单的循环插空效果
Sep 21 Javascript
基于Vue中点击组件外关闭组件的实现方法
Mar 06 Javascript
vue router 配置路由的方法
Jul 26 Javascript
Angular2之二级路由详解
Aug 31 Javascript
JS实现li标签的删除
Apr 12 Javascript
JS中的算法与数据结构之链表(Linked-list)实例详解
Aug 20 Javascript
echarts.js 动态生成多个图表 使用vue封装组件操作
Jul 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加密解密函数authcode的用法详细解析
2013/10/28 PHP
标准PHP的AES加密算法类
2015/03/12 PHP
PHP5.3以上版本安装ZendOptimizer扩展
2015/03/27 PHP
php中使用sftp教程
2015/03/30 PHP
php+mysql查询实现无限下级分类树输出示例
2016/10/03 PHP
phpStudy2016 配置多个域名期间遇到的问题小结
2017/10/19 PHP
PHP基于rabbitmq操作类的生产者和消费者功能示例
2018/06/16 PHP
PHP实现单文件、多个单文件、多文件上传函数的封装示例
2019/09/02 PHP
jquery.post用法之type设置问题
2014/02/24 Javascript
浅析Node.js的Stream模块中的Readable对象
2015/07/29 Javascript
Javascript 计算字符串在localStorage中所占字节数
2015/10/21 Javascript
JavaScript中日期的相关操作方法总结
2015/10/24 Javascript
javascript如何实现暂停功能
2015/11/06 Javascript
JS实现字符串转驼峰格式的方法
2016/12/16 Javascript
js点击任意区域弹出层消失实现代码
2016/12/27 Javascript
js实现兼容PC端和移动端滑块拖动选择数字效果
2017/02/16 Javascript
jQuery获取Table某列的值(推荐)
2017/03/03 Javascript
微信小程序 跳转传递数据的实例
2017/07/06 Javascript
浅谈Angular HttpClient简单入门
2018/05/04 Javascript
使用bootstrap实现下拉框搜索功能的实例讲解
2018/08/10 Javascript
解决Vue使用swiper动态加载数据,动态轮播数据显示白屏的问题
2018/09/27 Javascript
vue多页面项目中路由使用history模式的方法
2019/09/23 Javascript
如何正确理解vue中的key详解
2019/11/02 Javascript
es6中new.target的作用和使用场景简单示例分析
2020/03/14 Javascript
Nodejs + sequelize 实现增删改查操作
2020/11/07 NodeJs
微信小程序实现简单购物车功能
2020/12/30 Javascript
在Linux系统上部署Apache+Python+Django+MySQL环境
2015/12/24 Python
Python发送邮件测试报告操作实例详解
2018/12/08 Python
利用python提取wav文件的mfcc方法
2019/01/09 Python
Python动态语言与鸭子类型详解
2019/07/01 Python
利用matplotlib实现根据实时数据动态更新图形
2019/12/13 Python
计算机应用专业毕业生求职信
2013/10/24 职场文书
考试作弊被抓检讨书
2014/01/10 职场文书
爱心活动计划书
2014/04/26 职场文书
保险公司开门红口号
2014/06/21 职场文书
单位作风建设剖析材料
2014/10/11 职场文书