当我在添加行javascript中删除行时,行计数无法正常工作

时间:2015-06-03 13:39:35

标签: javascript jquery html css twitter-bootstrap

我使用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>

2 个答案:

答案 0 :(得分:3)

&#13;
&#13;
delete john.token;  // In place of John.token = null
&#13;
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);
}
&#13;
&#13;
&#13;

您可以使用以下功能在动态删除记录时更新号码

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

在你的deleteRow函数中

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 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 = ''; } } 传递给update_number函数并动态读取表数据并更新数字。

答案 1 :(得分:0)

您必须为每行更改行号,

function RefreshRowNumber(){
         $("#add-row1 tr").each(function(i,n){ 
                var td = $(this).find('td:eq(0)').html('').append(i+1); 
         });  
}

尝试更新您的代码,如下所示

function deleteRow(row) {
     // your code here
       RefreshRowNumber();
}

function insRow() {
      // your code here
      RefreshRowNumber();
}