回1楼,确实对我有一定的启发。 按照你的应该是这样 function addRow(){ var row = document.getElementById("ModelRow"); var ib = document.getElementById("insertBefore"); var n = row.cloneNode(true); n.setAttribute("id",1); var targetTr=document.getElementById("1"); var targetTd=targetTr.nextSibling; for(i=0;i <3;i++){ targetTd.setAttribute("name",i); targetTd=targetTd.nextSibling; } row.parentNode.insertBefore(n,ib);} 但是好像新增加的tr,id还是modelrow,里面td的name也没变而且如果在增加一行,不是还一样。
var targetTr=document.getElementById("1");
//寻找tr的firstChild的nextSibling,因为,火狐浏览器中会把新添加tr后的空格判断为其 //firstChild,所以真正的td是firstChild的nextSibling
var targetTd=targetTr.firstChild.nextSibling;
//每次只添加3个td,所以循环就做3次吧
for(i=0;i<3;i++){
//设置td属性中name的值为i
targetTd.setAttribute("name",i);
//同理,新添加的td后的空格也会被判断为其nextSibling,所以,真正的下一个td是其//nextSibling的nextSibling
targetTd=targetTd.nextSibling.nextSibling;
}以上程序在火狐中测试成功IE是否会这么判断没有测试过,不过,相信你应该做得出相应的程序,希望这些会对你有用:)
按照你的应该是这样
function addRow(){
var row = document.getElementById("ModelRow");
var ib = document.getElementById("insertBefore");
var n = row.cloneNode(true);
n.setAttribute("id",1);
var targetTr=document.getElementById("1");
var targetTd=targetTr.nextSibling;
for(i=0;i <3;i++){
targetTd.setAttribute("name",i);
targetTd=targetTd.nextSibling;
}
row.parentNode.insertBefore(n,ib);}
但是好像新增加的tr,id还是modelrow,里面td的name也没变而且如果在增加一行,不是还一样。
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<META http-equiv="Content-Style-Type" content="text/css">
</head>
<script language=javascript>
var TH_HEIGHT="20px";
var THCOLOR="#ffff99";
var THBGCOLOR= "#ccecff";
var NEW_COLOR="#ffffff";
var rows=0;
function createEventTable() {
var newRow,col1,col2,col3;
var ln = document.getElementById("tb1").rows.length;
if( ln > 0){
for(var i=0; i<ln; i++){
if(document.getElementById("tb1").rows.length <= 0)break;
document.getElementById("tb1").deleteRow(-1);
}
}
for(var colno=0; colno<rows; colno++){
newRow = document.getElementById("tb1").insertRow(-1);
newRow.id = 'r'+colno;
document.getElementById("r"+colno).height = TH_HEIGHT;
document.getElementById("r"+colno).bgColor = THCOLOR;
col1=newRow.insertCell(0);
col2=newRow.insertCell(1);
col3=newRow.insertCell(2);
col1.id="col1"+colno
col2.id = "col2"+colno;
col3.id = "col3"+colno;
col1.innerText = "列一"+colno;
col2.innerText = "列二"+colno;
col3.innerText = "列三"+colno;
col1.onclick=alertMe
col2.onclick=alertMe
col3.onclick=alertMe
}
}
function alertMe(){
alert("我的ID是"+this.id)
}
window.onload=function(){
}
function addline(){
rows++;
createEventTable();
}
</script>
<body >
<div><input type=button onclick=addline() value=" + ">
</div> <TABLE cellSpacing="0" borderColorDark="black" cellPadding="1" borderColorLight="black" border="1" ID="Table1">
<thead>
<COLGROUP>
<COL align="center">
</COL>
<COL align="center">
</COL>
<COL align="center">
</COL>
<COL align="center">
</COL>
<TR height="22px" bgColor="#ccecff">
<TH width="36" >列1</TH>
<TH width="36" >列2</TH>
<TH width="36" >列3</TH>
</TR>
</thead>
<TBODY id="tb1">
</TBODY>
</TABLE></body>
</html>
但我所说的name属性是表格内部的input文本框,
望再指点一哈!!!
newRow = document.getElementById("tb1").insertRow(-1);
newRow.id = 'r'+colno;
document.getElementById("r"+colno).height = TH_HEIGHT;
document.getElementById("r"+colno).bgColor = THCOLOR;
col1=newRow.insertCell(0);
col2=newRow.insertCell(1);
col3=newRow.insertCell(2);
col1.id="col1"+colno
col2.id = "col2"+colno;
col3.id = "col3"+colno;
/*如果增加名字属性,这样加
col1.name="col1"+colno
col2.name= "col2"+colno;
col3.name= "col3"+colno; /*
/*如果加input的话。这样加
col1.innerHTML="<input name="+自定义名+">";
col2.innerHTML="<input name="+自定义名+">";
col3.innerHTML="<input name="+自定义名+">";
*/ col1.innerText = "列一"+colno;
col2.innerText = "列二"+colno;
col3.innerText = "列三"+colno;
col1.onclick=alertMe
col2.onclick=alertMe
col3.onclick=alertMe
}自定义名可以是个循环变量,名字+行+列,这样你就可以根据第几行,第几列获得你的input的name了
比如asp的话:<%
' Request("stand1").count 取得同名字段数量
Response.Write Request("stand1")(2) ' 取得指定的同名字段
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档 </title>
</head>
<script language="javascript">
<!--
function addRow(){
var row = document.getElementById("modelRow");
var ln = row.nextSibling;
var ib = document.getElementById("insertBefore");
var n = row.cloneNode(true);
n.setAttribute("id",null);
var nln = ln.cloneNode(true);
row.parentNode.insertBefore(n,ib );
row.parentNode.insertBefore(nln,ib);
}
function deleteRow(){
var ib = document.getElementById("insertBefore");
var line = ib.previousSibling;
var row = line.previousSibling;
if( row.id == "modelRow" )
{
alert('这是最后一项,不能删除');
return;
}
ib.parentNode.removeChild(line);
ib.parentNode.removeChild(row);
}
//-->
</script>
<body>
<form method="post" action="test1.asp">
<div align="center">
<input type="button" name="Submit" value="增加一项" onclick="addRow()">
<input type="button" name="Submit3" value="减少一项" onclick="deleteRow()">
<br>
</div>
<table width="75%" height="135" border="0" align="center" cellpadding="0" cellspacing="0" id="ice">
<tr>
<td width="43%"> <div align="center"> <font color="#FF0000"> <strong>工作目标 </strong> </font> </div> </td>
<td width="28%"> <div align="center"> <font color="#FF0000"> <strong>考核标准 </strong> </font> </div> </td>
<td width="29%"> <div align="center"> <font color="#FF0000"> <strong>分值 </strong> </font> </div> </td>
</tr>
<tr>
<td height="30" colspan="3"> <hr align="center" width="80%" size="1" noshade>
</td>
</tr>
<tr id="modelRow">
<td> <div align="center">
<input name="goal" type="text" value="这里输入工作目标">
</div> </td>
<td> <div align="center">
<input name="stand1" type="text" value="及时" size="12">
<br>
<br>
<input name="stand2" type="text" value="准确" size="12">
</div> </td>
<td> <div align="center">
<input name="stand1_score" type="text" value="3" size="10">
<br>
<br>
<input name="stand2_score" type="text" value="5" size="10">
</div> </td>
</tr>
<tr>
<td height="30" colspan="3"> <hr align="center" width="80%" size="1" noshade> </td>
</tr>
<tr>
<td> <div align="center">
<input name="goal" type="text" value="这里输入工作目标2">
</div> </td>
<td> <div align="center">
<input name="stand1" type="text" value="及时" size="12">
<br>
<br>
<input name="stand2" type="text" value="准确" size="12">
</div> </td>
<td> <div align="center">
<input name="stand1_score" type="text" value="2" size="10">
<br>
<br>
<input name="stand1_score" type="text" value="8" size="10">
</div> </td>
</tr>
<tr>
<td height="30" colspan="3"> <hr align="center" width="80%" size="1" noshade> </td>
</tr>
<tr id="insertBefore">
<td height="30"> </td>
<td height="30"> </td>
<td height="30"> </td>
</tr>
<tr>
<td height="30"> </td>
<td height="30"> </td>
<td height="30"> </td>
</tr>
<tr>
<td height="30" colspan="3"> <div align="center">
<input type="submit" name="Submit2" value="确定提交">
</div> </td>
</tr>
</table>
</form>
</body>
</html>