以下的代码你可以根据需要进行修改. 实现此方式主要是靠<td> 中的id值<table width="200" cellpadding="3" cellspacing="1" id="sTable"> <% for i=0 to 4 dim trnum:trnum="tr"&i %> <tr> <td bgcolor="#CCCCCC" id=" <%=trnum%>" name="" onclick="_onClieck(this)"> <%=trnum%> </td> </tr> <% for n=0 to 3 dim skdl:skdl=trnum&n %> <tr style="display:none" > <td id=" <%=skdl%>" name=" <%=trnum%>" onclick="_onClieck(this)"> <%=skdl%> </td> </tr> <% for mm=0 to 3 dim nnn:nnn="tff"&mm %> <tr style="display:none"> <td id=" <%=nnn%>" bgcolor="#FFCCFF" name=" <%=skdl%>" onclick="_onClieck(this)"> <%=nnn%> </td> </tr> <% next next next %> </table> <script lanuage=javascript> var objTable = document.getElementById("sTable"); var iRows = objTable.rows.length; function _onClieck(obj) { for(var i=0;i <iRows;i++) { if(objTable.rows[i].firstChild.name==obj.id) { if(objTable.rows[i].style.display=="none") { objTable.rows[i].style.display="block"; } else { objTable.rows[i].style.display="none"; for(var j=iRows-1;j>i;j--) { if(objTable.rows[j].firstChild.name==objTable.rows[i].firstChild.id) { objTable.rows[j].style.display="none"; } } } } } } </script>
<body> <table id="tb"> </table> </body> </html> <script> function add_table(n) { var str=''; for(var i=1;i<=n;i++) { str += '<tr><td></td><td onclick="display_tr(' + i + ')">点此显示/隐藏r' + i + '</td></tr><tr id="r' + i + '" style="display:none"><td colSpan=2>被显示或隐藏的内容</td></tr>'; } document.getElementById("tb").innerHTML=str; } function display_tr(i) { var tr=document.getElementById("r"+i); tr.style.display = tr.style.display==""?"none":""; }add_table(3); </script>
参考: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>tableOper.html</title>
<meta http-equiv="blog" content="blog.csdn.net/IBM_hoojo"> <meta http-equiv="email" content="[email protected]"> <meta http-equiv="author" content="hoojo"> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <script type="text/javascript"> var row_index = 0; //建立一个函数build_row()用于建立新的一行且增加的四个文本框为空的且被禁用 function build_row() { row_index++; var tab = document.getElementById("Table1"); var new_row = tab.insertRow(Table1.rows.length); new_row.setAttribute("id", "row" + row_index); var new_col = new_row.insertCell(0); new_col.innerHTML = "<input type='text' id='T1" + row_index + "' name='T1' size='20' >"; var new_col = new_row.insertCell(1); new_col.innerHTML = "<input type='text' id='T2" + row_index + "' name='T2' size='20' >"; var new_col = new_row.insertCell(2); new_col.innerHTML = "<input type='text' id='T3" + row_index + "' name='T3' size='8' >"; var new_col = new_row.insertCell(3); var prc = Math.round(Math.random()*13+1); new_col.innerHTML = "<input type='text' id='T4" + row_index + "' name='T4' size='8' value='" + prc + "'>"; var new_col = new_row.insertCell(4); new_col.innerHTML = "<input type='button' value='删除此行' id='B5" + row_index + "' name='B5' LANGUAGE='javascript' onclick=\"delete_row('row" + row_index + "')\">"; var tab = document.getElementById("Table1"); var count = tab.rows.length; if (count > 1) { for (var i = 1; i < count; i ++) { var inp = tab.rows[i].getElementsByTagName("input"); for (var j = 0; j < inp.length; j++) { if (i != count - 1) { if (inp[j].type != "button") { inp[j].onclick = null;//不是最后一行,赋值null覆盖以前的事件 } } else { if (inp[j].type != "button") { inp[j].onclick = build_row; } } } } } }
function delete_row(id) { var tab = document.getElementById("Table1"); /*var index = -1; for (var i = 0, len = tab.rows.length; i < len; i++) { if (tab.rows[i].id == id) { index = i;//实际所在行数,不能在循环中删除。这样表格的行数长度和循环的长度不一致 break; } } if (index != -1) { tab.deleteRow(i); }*/
function getTotals() { var price = document.getElementsByName("T4"); var t = 0; for (var i = 0; i < price.length; i++) { t += Number(!price[i] ? 0 : price[i].value); } document.getElementById("totals").value = t; }
window.onload = function () { for (i = 0; i < 5; ++i) { build_row(); } getTotals(); } </script> </head>
<tr><td></td><td>点此显示/隐藏r1</td></tr>
<tr id="r1"><td colSpan=2>被显示或隐藏的内容</td></tr>
<tr><td></td><td>点此显示/隐藏r2</td></tr>
<tr id="r2"><td colSpan=2>被显示或隐藏的内容</td></tr>
<tr><td></td><td>点此显示/隐藏r3</td></tr>
<tr id="r3"><td colSpan=2>被显示或隐藏的内容</td></tr>
</table>window.onload=function(){
var tb= document.getElementById("tb");
for(var i=0;i< tb.rows.length-1;i+=2){
(function(i){tb.rows[i].onclick = function(){
tb.rows[i+1].style.display = tb.rows[i+1].style.display !="none"?"none":"";
};})(i)
}
}
</table>
<input type="button" value="ADD LINE" onclick="add(3);">
<script language="JavaScript">
<!--
function add(n){
var tbl = document.getElementById("tb");
var rw1,rw2,cl1,cl2,cl3;
var cellContent = "点此显示/隐藏r";
var cellContent2 = "被显示或隐藏的内容";
for (var i=0;i<n;i++) {
rw = tbl.insertRow();
cl1 = rw.insertCell();
cl2 = rw.insertCell();
cl2.innerHTML = cellContent+(rw.rowIndex+2)/2;
cl2.onclick = function(){this.parentNode.nextSibling.style.display =
this.parentNode.nextSibling.style.display == "none"?"":"none";};
rw2 = tbl.insertRow();
rw2.id = "r"+(rw.rowIndex+2)/2;
cl3 = rw2.insertCell();
cl3.colspan = 2;
cl3.innerHTML = cellContent2;
}
}
//-->
</script>
<%
for i=0 to 4
dim trnum:trnum="tr"&i
%>
<tr> <td bgcolor="#CCCCCC" id=" <%=trnum%>" name="" onclick="_onClieck(this)"> <%=trnum%> </td> </tr>
<%
for n=0 to 3
dim skdl:skdl=trnum&n
%>
<tr style="display:none" > <td id=" <%=skdl%>" name=" <%=trnum%>" onclick="_onClieck(this)"> <%=skdl%> </td> </tr>
<%
for mm=0 to 3
dim nnn:nnn="tff"&mm
%>
<tr style="display:none">
<td id=" <%=nnn%>" bgcolor="#FFCCFF" name=" <%=skdl%>" onclick="_onClieck(this)"> <%=nnn%> </td>
</tr>
<%
next
next
next
%>
</table>
<script lanuage=javascript>
var objTable = document.getElementById("sTable");
var iRows = objTable.rows.length; function _onClieck(obj)
{
for(var i=0;i <iRows;i++)
{
if(objTable.rows[i].firstChild.name==obj.id)
{
if(objTable.rows[i].style.display=="none")
{
objTable.rows[i].style.display="block";
}
else
{
objTable.rows[i].style.display="none";
for(var j=iRows-1;j>i;j--)
{
if(objTable.rows[j].firstChild.name==objTable.rows[i].firstChild.id)
{
objTable.rows[j].style.display="none";
}
}
}
}
}
}
</script>
<body>
<table id="tb">
</table>
</body>
</html>
<script>
function add_table(n)
{
var str='';
for(var i=1;i<=n;i++)
{
str += '<tr><td></td><td onclick="display_tr(' + i + ')">点此显示/隐藏r' + i + '</td></tr><tr id="r' + i + '" style="display:none"><td colSpan=2>被显示或隐藏的内容</td></tr>';
}
document.getElementById("tb").innerHTML=str;
}
function display_tr(i)
{
var tr=document.getElementById("r"+i);
tr.style.display = tr.style.display==""?"none":"";
}add_table(3);
</script>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>tableOper.html</title>
<meta http-equiv="blog" content="blog.csdn.net/IBM_hoojo">
<meta http-equiv="email" content="[email protected]">
<meta http-equiv="author" content="hoojo">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<script type="text/javascript">
var row_index = 0;
//建立一个函数build_row()用于建立新的一行且增加的四个文本框为空的且被禁用
function build_row() {
row_index++;
var tab = document.getElementById("Table1");
var new_row = tab.insertRow(Table1.rows.length);
new_row.setAttribute("id", "row" + row_index);
var new_col = new_row.insertCell(0);
new_col.innerHTML = "<input type='text' id='T1" + row_index + "' name='T1' size='20' >";
var new_col = new_row.insertCell(1);
new_col.innerHTML = "<input type='text' id='T2" + row_index + "' name='T2' size='20' >";
var new_col = new_row.insertCell(2);
new_col.innerHTML = "<input type='text' id='T3" + row_index + "' name='T3' size='8' >";
var new_col = new_row.insertCell(3);
var prc = Math.round(Math.random()*13+1);
new_col.innerHTML = "<input type='text' id='T4" + row_index + "' name='T4' size='8' value='" + prc + "'>"; var new_col = new_row.insertCell(4);
new_col.innerHTML = "<input type='button' value='删除此行' id='B5" + row_index + "' name='B5' LANGUAGE='javascript' onclick=\"delete_row('row" + row_index + "')\">";
var tab = document.getElementById("Table1");
var count = tab.rows.length;
if (count > 1) {
for (var i = 1; i < count; i ++) {
var inp = tab.rows[i].getElementsByTagName("input");
for (var j = 0; j < inp.length; j++) {
if (i != count - 1) {
if (inp[j].type != "button") {
inp[j].onclick = null;//不是最后一行,赋值null覆盖以前的事件
}
} else {
if (inp[j].type != "button") {
inp[j].onclick = build_row;
}
}
}
}
}
}
function delete_row(id) {
var tab = document.getElementById("Table1");
/*var index = -1;
for (var i = 0, len = tab.rows.length; i < len; i++) {
if (tab.rows[i].id == id) {
index = i;//实际所在行数,不能在循环中删除。这样表格的行数长度和循环的长度不一致
break;
}
}
if (index != -1) {
tab.deleteRow(i);
}*/
//or
tab.deleteRow(document.getElementById(id).rowIndex);
getTotals();
}
function getTotals() {
var price = document.getElementsByName("T4");
var t = 0;
for (var i = 0; i < price.length; i++) {
t += Number(!price[i] ? 0 : price[i].value);
}
document.getElementById("totals").value = t;
}
window.onload = function () {
for (i = 0; i < 5; ++i) {
build_row();
}
getTotals();
}
</script>
</head>
<body>
<table border="1" width="80%" cellspacing="0" cellpadding="0" id="Table1">
<tr>
<th align="center" bgcolor="#E6E6E6" height="16">
名称
</th>
<th align="center" bgcolor="#E6E6E6" height="16">
规格
</th>
<th align="center" bgcolor="#E6E6E6" height="16">
数量
</th>
<th align="center" bgcolor="#E6E6E6" height="16">
单价
</th>
<th align="center" bgcolor="#E6E6E6" height="16">
删除
</th>
</tr>
</table>
<div>
<input type="text" id="totals"/>
<input type="button" value="增加一行" name="B3" onclick="build_row()" />
<input type="button" value="提交" name="btnSbumit" id="btnSubmit" />
</div>
</body>
</html>
<head>
<meta http-equiv="blog" content="blog.csdn.net/IBM_hoojo">
<meta http-equiv="email" content="[email protected]">
<meta http-equiv="author" content="hoojo">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style>
body {
font-family: Verdana, Geneva, sans-serif;
font-size: 12px;
margin: 0px;
padding: 0px;
}
table {
font-size: 12px;
font-family: Verdana, Geneva, sans-serif
}
td {
text-align: center;
background: #FFF
}
tr {
height: 20px;
}
th {
background: #9DACBF;
color: #FFF;
height: 20px;
line-height: 20px
}
a {
color: #99C;
}
a:hover {
color: #F93
}
.input td {
padding: 2px
}
.input input {
width: 100%;
border: 1px solid #000;
overflow: hidden
}
</style>
<script type="text/javascript">
//简化document.getElementById()方法
function $(obj) {
return document.getElementById(obj);
}
//插入行
function insRow() {
var targetTable = $("nw");
var lastRow = getTBody(targetTable).appendChild(targetTable.rows[1].cloneNode(true)); //插入行方法
clearTextBox(lastRow);
var newCell3 = lastRow.cells[2];
newCell3.innerHTML = '<a href="#">删除</a>';
newCell3.onclick = delRow;
}
//删除行
function delRow() {
var targetTable = $("nw");
targetTable.deleteRow(this.parentNode.rowIndex);
}
function getTBody(table) {
for (var i=0; i<table.childNodes.length; i++) {
if (table.childNodes[i].nodeType == 1
&& table.childNodes[i].tagName.toLowerCase()=="tbody")
return table.childNodes[i];
}
}
function clearTextBox(target) {
var allInputs = target.getElementsByTagName("input");
var ipt;
for (var i=0; i<allInputs.length; i++) {
ipt = allInputs[i];
if (ipt.type.toLowerCase()=="text") {
ipt.value = "";
}
}
}
</script>
<title>Javascript控制表格 实现动态添加和删除表格内容</title>
</head>
<body>
<table id="nw" cellpadding="0" cellspacing="1" border="0" width="320" bgcolor="#CCCC99">
<th>编号</th>
<th>名称</th>
<th>操作</th>
<tr class="input">
<td><input type="text" id="name" /></td>
<td><input type="text" id="add" /></td>
<td style="width: 52px"><input type="button" value="添 加" class="btn" onClick="insRow()" /></td>
</tr>
</table>
</body>
</html>
add_table(n)
display_tr(i)
这两个方法顺序换下把display_tr(i)放在上面,要不可能找不到方法