删除表格中的最后一行。

8

我有一个简单的问题,我想删除表格中的最后一行,但是我复制了一个删除选中行的函数:

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

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

我该如何修改它,使其每次调用时只删除最后一行?感谢大家的帮助!我非常感激!

6个回答

21

deleteRow函数接受一个索引,将其传递为count - 1

http://jsfiddle.net/jbabey/HEDNZ/

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

    table.deleteRow(rowCount -1);
}

是的!问题解决了!谢谢!还有2分钟,就要提交了。 - Bato Dor
这并没有涵盖您的“已选中”情况。 - Michael Christensen

2
为什么不直接使用:

function deleterow(tableID) {
    var table = document.getElementById(tableID);
    table.deleteRow(-1);
}

1
function deleterow(tableID) {

    var table = document.getElementById(tableID);
    var rowCount = table.rows.length;
     var row = table.rows[rowCount - 1 ];

            table.deleteRow(row);

}

0

我还没有测试过,但我认为类似这样的代码应该可以工作:

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

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

相同的故事 :) 删除第一行,而不是最后一行。 - Bato Dor
很奇怪。在这种情况下,请尝试以下代码: function deleterow(tableID) { try { var table = document.getElementById(tableID); var lastRow = table.rows[0]; table.deleteRow(0);}catch(e) { alert(e); }} - Simon
没有 )) 可能我做错了什么?备注:已经有8行带标题,总共9行。 - Bato Dor

0

我不确定rowCount对你是否有特殊意义。

使用while迭代可以从后面开始。只有在实际删除一个时才中断。

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

        while(i--) {
            var row = table.rows[i];
            var chkbox = row.cells[0].childNodes[0];
            if(null != chkbox && true == chkbox.checked) {
                table.deleteRow(row);
                rowCount--;
                break;
            }
        }
     }catch(e) {
        alert(e);
    }
}

-1

使用 table.deleteRow(i);

代替

table.deleteRow(row); 希望这个可行 :)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接