我正在使用 javascript 添加行一切正常,但是当我删除中间行时,行数没有得到更新。
行数是这样的:1,2,3,4,5
如果我删除第 3 行,它会变成:1,2,4,5
HTML
<table class="table table-hover" id="add-row">
<thead>
<tr>
<th>#</th>
<th>Name</th>
<th style="text-align: right;">Delete</th>
</tr>
</thead>
<tbody id="add-row1">
<tr>
<td>1</td>
<td>
<input type="text" class="form-control input-sm" placeholder="Enter Group Name" id="group" /></td>
<td>
<button class="btn btn-sm btn-danger pull-right" id="delPOIbutton" onclick="deleteRow(this)"><i class="fa fa-close"></i>Delete</button></td>
</tr>
</tbody>
<tfoot>
<tr>
<td colspan="3">
<button class="btn btn-sm btn-success pull-right"><i class="fa fa-save"></i>Save</button>
<button class="btn btn-sm btn-primary" id="addmore" onclick="insRow()"><i class="fa fa-plus"></i>Add</button>
</td>
</tr>
</tfoot>
</table>
Javascript
function deleteRow(row) {
var i = row.parentNode.parentNode.rowIndex;
if (i > 1) {
document.getElementById('add-row').deleteRow(i);
}
else {
document.getElementById('add-row').getElementsByTagName('input')[0].value = '';
}
}
function insRow() {
var x = document.getElementById('add-row');
var x1 = document.getElementById('add-row1');
var new_row = x.rows[1].cloneNode(true);
var len = x.rows.length;
new_row.cells[0].innerHTML = len - 1;
var inp1 = new_row.cells[1].getElementsByTagName('input')[0];
inp1.id += len;
inp1.value = '';
x1.appendChild(new_row);
}
<table class="table table-hover" id="add-row">
<thead>
<tr>
<th>#</th>
<th>Name</th>
<th style="text-align: right;">Delete</th>
</tr>
</thead>
<tbody id="add-row1">
<tr>
<td>1</td>
<td>
<input type="text" class="form-control input-sm" placeholder="Enter Group Name" id="group" /></td>
<td>
<button class="btn btn-sm btn-danger pull-right" id="delPOIbutton" onclick="deleteRow(this)"><i class="fa fa-close"></i>Delete</button></td>
</tr>
</tbody>
<tfoot>
<tr>
<td colspan="3">
<button class="btn btn-sm btn-success pull-right"><i class="fa fa-save"></i>Save</button>
<button class="btn btn-sm btn-primary" id="addmore" onclick="insRow()"><i class="fa fa-plus"></i>Add</button>
</td>
</tr>
</tfoot>
</table>
最佳答案
function deleteRow(row) {
var i = row.parentNode.parentNode.rowIndex;
if (i > 1) {
document.getElementById('add-row').deleteRow(i);
update_number(i);
} else {
document.getElementById('add-row').getElementsByTagName('input')[0].value = '';
}
}
function update_number(i) {
var table = document.getElementById("add-row");
for (var r = 1, n = table.rows.length; r < n; r++) {
for (var c = 0, m = table.rows[r].cells.length; c < 1; c++) {
var table_date = table.rows[r].cells[0].innerHTML;
if(!isNaN(table_date)){
if (i < table_date) {
var new_data = table_date - 1;
table.rows[r].cells[0].innerHTML = new_data;
}
}
}
}
}
function insRow() {
var x = document.getElementById('add-row');
var x1 = document.getElementById('add-row1');
var new_row = x.rows[1].cloneNode(true);
var len = x.rows.length;
new_row.cells[0].innerHTML = len - 1;
var inp1 = new_row.cells[1].getElementsByTagName('input')[0];
inp1.id += len;
inp1.value = '';
x1.appendChild(new_row);
}
<table class="table table-hover" id="add-row">
<thead>
<tr>
<th>#</th>
<th>Name</th>
<th style="text-align: right;">Delete</th>
</tr>
</thead>
<tbody id="add-row1">
<tr>
<td>1</td>
<td>
<input type="text" class="form-control input-sm" placeholder="Enter Group Name" id="group" />
</td>
<td>
<button class="btn btn-sm btn-danger pull-right" id="delPOIbutton" onclick="deleteRow(this)"><i class="fa fa-close"></i>Delete</button>
</td>
</tr>
</tbody>
<tfoot>
<tr>
<td colspan="3">
<button class="btn btn-sm btn-success pull-right"><i class="fa fa-save"></i>Save</button>
<button class="btn btn-sm btn-primary" id="addmore" onclick="insRow()"><i class="fa fa-plus"></i>Add</button>
</td>
</tr>
</tfoot>
</table>
您可以使用下面这个函数来动态删除记录的同时更新号码
function update_number(i) {
var table = document.getElementById("add-row");
for (var r = 1, n = table.rows.length; r < n; r++) {
for (var c = 0, m = table.rows[r].cells.length; c < 1; c++) {
var table_date = table.rows[r].cells[0].innerHTML;
if(!isNaN(table_date)){
if (i < table_date) {
var new_data = table_date - 1;
table.rows[r].cells[0].innerHTML = new_data;
}
}
}
}
}
像这样在你的 deleteRow 函数中
function deleteRow(row) {
var i = row.parentNode.parentNode.rowIndex;
if (i > 1) {
document.getElementById('add-row').deleteRow(i);
update_number(i);
} else {
document.getElementById('add-row').getElementsByTagName('input') [0].value = '';
}
}
所做的是将 var i
传递给 update_number 函数并动态读取表数据并更新数字。
关于javascript - 当我删除添加行 javascript 中的行时,行计数无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30621819/