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

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

最佳答案

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/

相关文章:

javascript - 开始 html 页面滚动

javascript - 将 jQuery 对象存储到数组中以供以后使用

jquery - 如何将图像添加到文本框自动完成源

javascript - 检测用户输入的文本框的值

javascript - 删除按钮不起作用

javascript - CORS - Ajax 或 XMLHttpRequest 类型 GET 与 "Authorization"获取错误 307

javascript - 如何使用 WebStorm IDE 在我的 Meteor 应用程序中调试 CoffeeScript

javascript - 将 JQuery 输入限制为仅先前未输入过的唯一字符的任何方法

javascript - 仅在 1 行上显示文本而不破坏单词并以省略号终止

javascript - 从文本更改更改大小的按钮的 CSS 或 JS 转换?