Как удалить все таблицы в HTML с помощью JavaScript? - PullRequest
2 голосов
/ 15 ноября 2008

Как я могу удалить все таблицы на веб-странице? Таблицы не имеют идентификаторов, связанных с ними.

Ответы [ 4 ]

12 голосов
/ 15 ноября 2008

Очень простая версия:

var tables = document.getElementsByTagName("TABLE");
for (var i=tables.length-1; i>=0;i-=1)
   if (tables[i]) tables[i].parentNode.removeChild(tables[i]);
5 голосов
/ 15 ноября 2008

Опасность! getElementsByTagName возвращает «живой» NodeList. В коде Джоэла удаление элемента 0 перемещает элементы в списке вниз, так что при удалении элемента 1 вы пропустили один.

Возможные альтернативы: если вы знаете, что всегда будете удалять каждый элемент, вы можете использовать цикл while:

var tables= document.getElementsByTagName('table');
while (tables.length>0)
    tables[0].parentNode.removeChild(tables[0]);

Или, если вы можете или не можете удалить, но порядок итераций не важен, просмотрите список в обратном порядке:

var tables= document.getElementsByTagName('table');
for (var i= tables.length; i-->0;)
    tables[i].parentNode.removeChild(tables[i]);

Если вы можете, а можете и не удалить и , вам нужно выполнить итерацию вперед, вам надоело копировать список:

function toArray(l) {
    var a= [];
    for (var i= 0; i<l.length; i++)
        a[i]= l[i];
    return a;
}

var tables= toArray(document.getElementsByTagName('table'));
for (var i= 0; i<tables.length; i++)
    ...
3 голосов
/ 15 ноября 2008

Если вы используете jQuery, это довольно просто ...

$(document).ready(function() {
  $("table").remove();
});

не уверен, как дела в других библиотеках.

если вы не используете библиотеку js, вам следует.

1 голос
/ 16 ноября 2008

Или:

function myF() {
    this.checkChild = function(tagN, node) {
        if (node.tagName.toLower() == tagN.toLower()) {
            node.parentNode.removeChild(node);
        }
        else {
            var i;
            for(i = 0; i < node.childNodes.length; i++)
                this.checkChild(tagN, node.childNodes[i]);
        }
    }
}

Использование:


var m = new myF();
m.checkChild("The name of the tagname. This case: table", document.body); 
 

Удачи!

...