【问题标题】:Onclick event in dynamically created button in javascriptjavascript中动态创建的按钮中的onclick事件
【发布时间】:2012-10-30 06:24:06
【问题描述】:

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

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

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

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

提前致谢。

【问题讨论】:

    标签: javascript dynamic onclick tablerow


    【解决方案1】:

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

    element1.onclick=addRow(tableID);
    

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

    你实际上在做的是直接调用'addRow'函数,导致程序无限循环。

    解决这个问题的最短路径是使用类似的东西:

    element1.setAttribue('onclick','addRow("'+tableID+'")');
    

    【讨论】:

    • 嗨克拉克潘,谢谢你。现在它无限循环。当我单击按钮时,会添加一个新行。但是按钮单击事件不会添加到新添加的按钮中。 IE。如果我单击第二行中的按钮,则不会添加新行。如何做到这一点。
    • 非常感谢 clark.. 它现在可以工作了.. 但是当我单击任何按钮时会添加新行。我想为以前添加的按钮禁用此功能。并且只想在我单击最后添加的按钮时添加。 IE。添加新行后,此行按钮应更改为删除按钮。
    【解决方案2】:

    那是因为你的函数在调用自己:

    **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);**
    
    }
    

    【讨论】:

    • 非常感谢..如何从新添加的按钮调用addrow函数。(当我点击第二行的按钮时)
    猜你喜欢
    • 2016-06-29
    • 2020-03-24
    • 1970-01-01
    • 2012-08-17
    • 1970-01-01
    • 1970-01-01
    • 2022-10-15
    • 1970-01-01
    相关资源
    最近更新 更多