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 相关文章推荐
跟随鼠标旋转的文字
Nov 30 Javascript
客户端脚本中常常出现的一些问题和调试技巧
Jan 09 Javascript
JS定时器实例
Apr 17 Javascript
原生javascript模仿win8等待提示圆圈进度条
Apr 24 Javascript
js语法学习之判断一个对象是否为数组
May 13 Javascript
js实现正方形颜色从下往上升的效果
Aug 04 Javascript
js闭包实例汇总
Nov 09 Javascript
基于JavaScript实现div层跟随滚动条滑动
Jan 12 Javascript
jQuery Validate让普通按钮触发表单验证的方法
Dec 15 Javascript
jQuery实现文章图片弹出放大效果
Apr 06 jQuery
jquery.masonry瀑布流效果
May 25 jQuery
vue-cli脚手架-bulid下的配置文件
Mar 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
Yii隐藏URL中index.php的方法
2016/07/12 PHP
实例讲解通过​PHP创建数据库
2019/01/20 PHP
40款非常棒的jQuery 插件和制作教程(系列一)
2011/10/26 Javascript
利用JS进行图片的切换即特效展示图片
2013/12/03 Javascript
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(二)
2015/12/10 Javascript
Vue 短信验证码组件开发详解
2017/02/14 Javascript
webpack 插件html-webpack-plugin的具体使用
2018/04/09 Javascript
基于jquery实现九宫格拼图小游戏
2018/11/30 jQuery
toString.call()通用的判断数据类型方法示例
2020/08/28 Javascript
在Python中处理日期和时间的基本知识点整理汇总
2015/05/22 Python
Python入门教程之运算符与控制流
2016/08/17 Python
通过5个知识点轻松搞定Python的作用域
2016/09/09 Python
python利用拉链法实现字典方法示例
2017/03/25 Python
python 遍历字符串(含汉字)实例详解
2017/04/04 Python
Python实现的本地文件搜索功能示例【测试可用】
2018/05/30 Python
Python重新加载模块的实现方法
2018/10/16 Python
python 运用Django 开发后台接口的实例
2018/12/11 Python
详解python的argpare和click模块小结
2019/03/31 Python
Python 正则表达式 re.match/re.search/re.sub的使用解析
2019/07/22 Python
如何基于python操作excel并获取内容
2019/12/24 Python
使用python实现希尔、计数、基数基础排序的代码
2019/12/25 Python
tf.concat中axis的含义与使用详解
2020/02/07 Python
jupyter notebook 恢复误删单元格或者历史代码的实现
2020/04/17 Python
如何基于python实现年会抽奖工具
2020/10/20 Python
挪威手表购物网站:Klokker
2016/09/19 全球购物
FOREO官方网站:LUNA露娜洁面仪
2016/11/28 全球购物
梅西百货官网:Macy’s
2020/08/04 全球购物
大一自我鉴定范文
2013/10/04 职场文书
优秀求职信范文分享
2014/01/26 职场文书
一月红领巾广播稿
2014/02/11 职场文书
教师考核材料
2014/05/21 职场文书
师德师风承诺书
2014/05/23 职场文书
2015年精神文明建设工作总结
2015/04/21 职场文书
Mac环境Nginx配置和访问本地静态资源的实现
2021/03/31 Servers
小程序实现筛子抽奖
2021/05/26 Javascript
如何搭建 MySQL 高可用高性能集群
2021/06/21 MySQL