在javascript中动态创建按钮的Onclick事件

时间:2012-10-30 06:24:07

标签: javascript dynamic onclick tablerow

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

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

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

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

提前感谢。

2 个答案:

答案 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);**

}