前段时间有人问起原生javascript操作表格的一些写法,百度了一把,顺便把表格一些专门的方法整理了一下,写个demo存着。
获取某行:objtable.rows[index]
获取某列:objtable.rows[rowindex].cells[index]
获取当前行号:objrow.rowIndex
插入一行:insertRow(index) 插入一行到index所在行之前并返回新建的行对象
删除一行:deleteRow() 不传参数,表示删除第一行
插入一个单元格:objrow.insertCell(index)
删除一个单元格;objrow.deletetCell(index)
*insertRow插入一行,插入的是空行,即<tr></tr>,还得继续插入单元格。
*deletetCell删除单元格,当一行所有的单元格都删完,就剩下空行<tr></tr>
demo代码如下,样式没有时间写
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>js操作表格demo</title>
<style type="text/css">
body{ background: repeat-x}
</style>
</head>
<body>
<table width="100%" border="1" cellspacing="1" cellpadding="0" id="tableDemo">
<tr>
<th scope="col">第一列</th>
<th scope="col">第二列</th>
<th scope="col">第三列</th>
<th scope="col">第四列</th>
</tr>
<tr>
<td>1-1</td>
<td>1-2</td>
<td>1-3</td>
<td>1-4</td>
</tr>
<tr>
<td>2-1</td>
<td>2-2</td>
<td>2-3</td>
<td>2-4</td>
</tr>
<tr>
<td>3-1</td>
<td>3-2</td>
<td>3-3</td>
<td>3-4</td>
</tr>
<tr>
<td>4-1</td>
<td>4-2</td>
<td>4-3</td>
<td>4-4</td>
</tr>
<tr>
<td>5-1</td>
<td>5-2</td>
<td>5-3</td>
<td>5-4</td>
</tr>
</table>
<input type="button" value="添加一行至第一行" οnclick="addfirstRow()"/><br />
<input type="button" value="添加一行至最后一行" οnclick="addlastRow()"/><br />
<input type="button" value="添加一行至" οnclick="addOneRow()"/><input type="text" id="asrowIndex" />行前<br />
<input type="button" value="删除第一行" οnclick="deletefirstrow()"/><br />
<input type="button" value="删除最后一行" οnclick="deletelastrow()"/><br />
<input type="button" value="删除" οnclick="deleterowcell()"/>第<input type="text" id="delrow"/>行第<input type="text" id="delcell" />列<br />
<script type="text/javascript">
//获取tabel对象
var objtable = document.getElementById("tableDemo");
//获得表头的列数
var cellnum = objtable.rows[0].cells.length;
//获得表格行数
var rownum;
//添加一行至第一行
function addfirstRow() {
var newRow = objtable.insertRow(1);
//newRow.rowIndex获得行数
addCell(newRow);
}
//添加一行至最后一行
function addlastRow() {
rownum = objtable.rows.length;
var newRow = objtable.insertRow(rownum);
addCell(newRow);
}
//添加一行至特定行
function addOneRow(){
var inserRowIndex = document.getElementById("asrowIndex").value;
//alert(inserRowIndex);
var newRow = objtable.insertRow(inserRowIndex);
addCell(newRow);
}
//添加一个单元格至第一行最后
function addlastcell_row(){
var fistrow = objtable.rows[1];
var newcell = fistrow.insertCell(fistrow.cells.length);
newcell.innerHTML ="222";
}
//删除第一行
function deletefirstrow(){
deleterow(1);
}
//删除最后一行
function deletelastrow(){
deleterow();
}
//删除某行某列
function deleterowcell(){
var delrow = document.getElementById("delrow").value;
var delcell = document.getElementById("delcell").value;
var row = objtable.rows[delrow];
row.deleteCell(delcell-1);
//如果被删成空行,继续删除行
if(!row.cells.length){
objtable.deleteRow(delrow);
}
}
//删除某行
function deleterow(delrow){
objtable.deleteRow(delrow);
}
//循环添加列
function addCell(newRow){
for(var i=0;i<cellnum; i++){
var newcell = newRow.insertCell(0);
newcell.innerHTML ="1111";
}
}
//鼠标经过行变色
window.οnlοad= function(){
for(var x = 0; x<objtable.rows.length;x++){
objtable.rows[x].οnmοusemοve=function(){
this.style.background="#e0e0e0";}
objtable.rows[x].οnmοuseοut=function(){
this.style.background="#fff";}
}
}
</script>
</body>
</html>
鼠标移动到每行变色,如果用jquery写更简单