您的位置:首页 > Web前端 > JavaScript

js动态创建、删除表格

2013-08-07 11:06 483 查看
生成一个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