4

要件: 1 行 3 列のテーブルが 1 つあります。最初の列にはボタンがあります。そのボタンをクリックすると、新しい行がテーブルに追加され、新しく追加された行(つまり、動的に作成された)のボタンをクリックすると、さらに新しい行が追加されます。

最後の行のボタンのみが新しい行を追加し、前のボタンはすべて削除ボタンに変更する必要があります。

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

このコードを実行すると、3 つの列を持つ 1 つの行が得られます。最初の行のボタンをクリックすると..行が無限に追加されます。出力を得るのを手伝ってください。

前もって感謝します 。

4

2 に答える 2

2

このコードが機能しない理由は、次の部分です。

element1.onclick=addRow(tableID);

期待しているのは、新しく作成された要素の「onclick」属性に「addRow(tableID)」の値を割り当てることです。

実際に行っているのは、「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 に答える