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 相关文章推荐
70+漂亮且极具亲和力的导航菜单设计国外网站推荐
Sep 20 Javascript
jQuery源码分析-03构造jQuery对象-工具函数
Nov 14 Javascript
JS实现淘宝幻灯片效果的实现方法
Mar 22 Javascript
js 判断浏览器使用的语言示例代码
Mar 22 Javascript
基于jQuery实现多标签页切换的效果(web前端开发)
Jul 24 Javascript
Javascript oop设计模式 面向对象编程简单实例介绍
Dec 13 Javascript
jquery 仿锚点跳转到页面指定位置的实例
Feb 14 Javascript
详解vue-cli 构建项目 vue-cli请求后台接口 vue-cli使用axios、sass、swiper
May 28 Javascript
js常见遍历操作小结
Jun 06 Javascript
layui--js控制switch的切换方法
Sep 03 Javascript
基于Electron实现桌面应用开发代码实例
Jul 07 Javascript
关于vue属性使用和不使用冒号的区别说明
Oct 22 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语句将数据库*.sql文件导入数据库
2014/05/05 PHP
PHP中strlen()和mb_strlen()的区别浅析
2014/06/19 PHP
Yii使用Captcha验证码的方法
2015/12/28 PHP
PHP输出多个元素的排列或组合的方法
2017/03/14 PHP
PHP使用两个栈实现队列功能的方法
2018/01/15 PHP
Laravel 实现密码重置功能
2018/02/23 PHP
PHPUnit + Laravel单元测试常用技能
2019/11/06 PHP
Firefox+FireBug使JQuery的学习更加轻松愉快
2010/01/01 Javascript
JavaScript执行顺序详细介绍
2013/12/04 Javascript
js获取html页面节点方法(递归方式)
2013/12/13 Javascript
JS根据年月获得当月天数的实现代码
2014/07/03 Javascript
Javascript基础教程之数据类型 (布尔型 Boolean)
2015/01/18 Javascript
js根据鼠标移动速度背景图片自动旋转的方法
2015/02/28 Javascript
使用JavaScript脚本无法直接改变Asp.net中Checkbox控件的Enable属性的解决方法
2015/09/16 Javascript
js判断手机浏览器操作系统和微信浏览器的方法
2016/04/30 Javascript
jackson解析json字符串,首字母大写会自动转为小写的方法
2017/12/22 Javascript
webpack引入eslint配置详解
2018/01/22 Javascript
vue项目中应用ueditor自定义上传按钮功能
2018/04/27 Javascript
Vue路由守卫之路由独享守卫
2019/09/25 Javascript
基于axios 的responseType类型的设置方法
2019/10/29 Javascript
js实现限定范围拖拽的示例
2020/10/26 Javascript
在Angular项目使用socket.io实现通信的方法
2021/01/05 Javascript
Python中关于Sequence切片的下标问题详解
2017/06/15 Python
对numpy中shape的深入理解
2018/06/15 Python
浅谈python实现Google翻译PDF,解决换行的问题
2018/11/28 Python
Python3爬虫教程之利用Python实现发送天气预报邮件
2018/12/16 Python
Python中面向对象你应该知道的一下知识
2019/07/10 Python
Python 导入文件过程图解
2019/10/15 Python
python 列表、字典和集合的添加和删除操作
2019/12/16 Python
python爬虫添加请求头代码实例
2019/12/28 Python
劳资协议书范本
2014/04/23 职场文书
党员干部对十八届四中全会的期盼
2014/10/17 职场文书
2015年公司行政后勤工作总结
2015/05/20 职场文书
电影地道战观后感
2015/06/04 职场文书
爱心捐款倡议书:点燃希望,传递温暖
2019/11/04 职场文书
还在手动盖楼抽奖?教你用Python实现自动评论盖楼抽奖(一)
2021/06/07 Python