要求: 我有一个表有一行三列。第一列有按钮。当我点击该按钮时,应该将新行添加到表中,当我单击新添加的行中的按钮(即动态创建)时,它应该进一步添加新行。
只有最后一行按钮应该添加新行,所有以前的按钮都应该更改为删除按钮。
- java脚本函数。
<html>
<head runat="server"><TITLE>Add/Remove dynamic rows in HTML table</TITLE>
<SCRIPT language="javascript">
function addRow(tableID) {
var table = document.getElementById(tableID);
var rowCount = table.rows.length;
var row = table.insertRow(rowCount);
var cell1 = row.insertCell(0);
var element1 = document.createElement("input");
element1.setAttribute('type','button');
element1.setAttribute('name','Add Row1');
element1.setAttribute('value','Add Row');
cell1.appendChild(element1);
var cell2 = row.insertCell(1);
var element2 = document.createElement("input");
element2.type = "text";
cell2.appendChild(element2);
var cell3 = row.insertCell(2);
var element3 = document.createElement("input");
element3.type = "checkbox";
cell3.appendChild(element3);
element1.onclick=addRow(tableID);
}
</HEAD>
<BODY>
<TABLE id="dataTable" width="250px" border="1">
<TR>
<td><INPUT type="button" value="Add Row" name="Add Row" onclick="addRow('dataTable')"/></td>
<TD><INPUT type="text" /></TD>
<TD><INPUT type="checkbox" name="chk"/></TD>
</TR>
</TABLE>
</BODY>
</html>
当我运行此代码时,我得到一行有三列。当我点击第一行中的按钮时......它无限地添加行。请帮助我获得输出。
提前感谢。
答案 0 :(得分:2)
此代码不起作用的原因是这部分:
element1.onclick=addRow(tableID);
您期望发生的是将'addRow(tableID)'的值分配给新创建的元素的'onclick'属性。
你实际做的是立即调用'addRow'函数,导致程序无限循环。
修复此问题的最短途径是使用类似的东西:
element1.setAttribue('onclick','addRow("'+tableID+'")');
答案 1 :(得分:1)
那是因为你的功能在调用自己:
**function addRow(tableID) {**
var table = document.getElementById(tableID);
var rowCount = table.rows.length;
var row = table.insertRow(rowCount);
var cell1 = row.insertCell(0);
var element1 = document.createElement("input");
element1.setAttribute('type','button');
element1.setAttribute('name','Add Row1');
element1.setAttribute('value','Add Row');
cell1.appendChild(element1);
var cell2 = row.insertCell(1);
var element2 = document.createElement("input");
element2.type = "text";
cell2.appendChild(element2);
var cell3 = row.insertCell(2);
var element3 = document.createElement("input");
element3.type = "checkbox";
cell3.appendChild(element3);
**element1.onclick=addRow(tableID);**
}