4

要求:我有一张一行三列的表。第一列有按钮。当我单击该按钮时,应将新行添加到表中,并且当我单击新添加行中的按钮(即动态创建)时,它应进一步添加新行。

只有最后一行按钮应该添加新行,所有以前的按钮都应该更改为删除按钮。

--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>

当我运行此代码时,我得到一行三列。当我单击第一行中的按钮时.. 它无限地添加行。请帮我获得输出。

提前致谢 。

4

2 回答 2

2

这段代码不起作用的原因是这部分:

element1.onclick=addRow(tableID);

您期望发生的是将“addRow(tableID)”值分配给新创建元素的“onclick”属性。

您实际上正在做的是立即调用“addRow”函数,导致程序无限循环。

解决此问题的最短路径是改用以下内容:

element1.setAttribue('onclick','addRow("'+tableID+'")');
于 2012-10-30T06:33:16.230 回答
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);**

}
于 2012-10-30T06:28:29.217 回答