1

我有一个无法理解的问题(对 JavaScript 来说很新)。需要知道如何使用 document.createElement 事件增加 HTML 中的变量(如果这是正确的术语)。

每次单击“添加行”按钮时,我都需要增加“值”属性,反之亦然“删除行”按钮。

到目前为止,我有:

HTML

<div id='ctrl_container'>

    <form action='$thisuri' method='post' id='spa' name='date2'>

    <input type="button" value="Add Row" onclick="addRow('dataTable')" />
    <input type="button" value="Delete Row" onclick="deleteRow('dataTable')" />

<table id="dataTable"  border='0' cellspacing='0' cellpadding='0' > 

    <tr>
        <th> Select </th>
        <th> ID </th>
        <th> Question </th>
    </tr>

    <tbody>
    <tr>
        <td> <input type="checkbox" name="chk[]" /> </td>
        <td> 1<input type="hidden" name="Q[]" value="1" /> </td>
        <td> <input type="text" name="txtbox[]" /> </td>
    </tr>
    </tbody>

</table>
    <input type='Submit' value='Submit Planned Audit' name='send'>
    </form>
</div>

JavaScript

function addRow(tableID) {

        var table = document.getElementById(tableID);

        var rowCount = document.getElementById(tableID).getElementsByTagName('tbody')
        [1].getElementsByTagName('tr').length;
        var row = table.insertRow(rowCount +1);

        var cell1 = row.insertCell(0);
        var element1 = document.createElement("input");
        element1.type = "hidden";
        element1.name = "Q[]";
        element1.value = rowCount +1;
        cell2.appendChild(element1);
        cell2.innerHTML = rowCount +1;
}

function deleteRow(tableID) {
        try {
        var table = document.getElementById(tableID);
        var rowCount = table.rows.length;

        for(var i=0; i<rowCount; i++) {
            var row = table.rows[i];
            var chkbox = row.cells[0].childNodes[0];
            if(null != chkbox && true == chkbox.checked) {
                table.deleteRow(i);
                rowCount--;
                i--;
            }


        }
        }catch(e) {
            alert(e);
        }
}

有人可以给我一些指示吗?

4

2 回答 2

1

如果要按名称递增:

var hiddenInputs = document.getElementsByName("Q[]");

编辑 :

for (var i = 0; i <= hiddenInputs.length; i++) {
    hiddenInputs[i].value = i + 1;
}

减量具有相同的逻辑。现在, hiddenInput(DOM element) 的值包含您的行数

于 2013-05-14T11:43:08.803 回答
1

看看这个 jsFiddle:http: //jsfiddle.net/pDxnb/1/

它肯定会为您提供一些指示,因为该行实际上现在已被明显添加。(我猜这里的行数不是问题)

问题过去和现在仍然是,您将空单元格添加为一行。我已将 cell2 添加到表中,我们可以看到正在发生的事情。

var cell2 = row.insertCell(1);
cell2.appendChild(element1);
cell2.innerHTML = rowCount +1;

我还做了什么调试是:

    alert(rowCount);

您应该能够自己解决其余的问题。如果您需要更多帮助,请在下方评论。

小费:

也许每次添加一行时都增加你的最高 ID 会更好,不要担心删除。这样你就永远不会有相同的ID

于 2013-05-14T11:44:35.363 回答