удаление последних 3 строк таблицы

#javascript #jquery

#javascript #jquery

Вопрос:

у меня есть таблица, и у меня есть две кнопки для добавления и удаления строк в эту таблицу.

таким образом, добавление строки легко (я получаю 3 строки через ajax каждый раз).

теперь я хочу иметь возможность удалить последние 3 строки таблицы, нажав на кнопку удаления, поэтому, если нет какой-либо функции или …. для удаления последних дополнений к моей таблице! мне нужно самому удалить последние три строки таблицы

что-то вроде

 $('#tbl tr:lt(3)').remove();
  

но последние 3 не первые!

или я должен сделать что-то глупое, например

 function remove(){
var i ;
for(i=0 ; i < 3 ; i   ){
$('#table tr:last').remove();
}
alert('removed');
}
  

Ответ №1:

 $("table tr").slice(-3).remove();
  

Комментарии:

1. спасибо Крис, у меня есть еще один вопрос, почему это не работает: var row_count = $(this).parent().siblings(‘таблица tr’) . длина; я могу получить такую таблицу, но я не могу получить trs

2. Ужасно! Элементы таблицы HTML имеют коллекцию строк, самый простой и быстрый способ (если вы должны использовать jQuery) должен быть $(#tableId)[0].rows.length , или аналогичный.

3. спасибо, что сработало, есть ли способ удалить последние 3 строки, используя объект $this ($this относится к кнопке)? $(this).parent().siblings(‘таблица tr’).slice(-3).remove();

Ответ №2:

Это не так глупо, это хороший обходной путь. Чтобы очистить его, я бы использовал

 function remove(){
    $('#table tr:last').remove();
    $('#table tr:last').remove();
    $('#table tr:last').remove();
    alert('removed');
}
  

Ответ №3:

Я согласен, это не глупо. Но на вашем месте я бы добавил параметр, количество строк для удаления:

 function removeLastRows(numberOfRows){
    var i ;
    for(i=0 ; i < numberOfRows ; i   ){
        $('#table tr:last').remove();
    }
    alert('removed');
}
  

Ответ №4:

Просто для сравнения с обычным JS,

 function removeLastRows(table, n) {
  if (!table || !n) return;
  var row, rows = table.rows;
  while (n--) {
    row = rows[rows.length];
    row.parentNode.removeChild(row);
  }
}

removeLastRows(document.getElementById('table', 3));