【发布时间】:2013-05-08 15:52:58
【问题描述】:
我有一个无法理解的问题(对 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);
}
}
谁能指点一下?
【问题讨论】:
-
您的其余代码是否有效?您能否提供一个 jsFiddle。请解释为什么需要增加,以及要在哪里显示行数?
-
尝试提醒(rowcount) 看看发生了什么
-
@NickN。 jsfiddle.net/2wpaL/1 我需要增加隐藏输入类型中的 value 属性。我做了 alert(rowCount) 但一无所获。我会再尝试。干杯。
-
谢谢你的提琴,提琴告诉我,你说的,不可能是你想做的。自从我们添加2行,然后删除第二行。添加的下一行也将称为 3。这将导致 2 行的 ID=3。你确定这是一个正确的问题吗?
-
是的,我知道,这就是为什么我也需要减少增量,我认为我可以一次解决这两个问题,也许需要重新考虑?
标签: javascript forms html-table increment