2014-01-23 5 views
0

У меня есть несколько разных таблиц на одной странице, но, к сожалению, им не были назначены какие-либо уникальные идентификаторы. Я хочу удалить таблицу с помощью команды JS, но поскольку идентификатор нельзя использовать, можно ли удалить таблицу на основе определенного атрибута? Например, есть ли команда удалить все таблицы на странице с атрибутом: width = "25%"?Удалить объект по атрибуту в javascript

ответ

2

Я знаю, что это уже есть какое-то решение, но я возносить еще одну альтернативы.

var tables = document.getElementsByTagName('table'); 
for(var i = 0; i < tables.length; i++){ 
    if(tables[i].getAttribute('width') == "25%"){ 
     tables[i].parentNode.removeChild(tables[i]); 
    } 
} 

Демоверсия http://codepen.io/michaelehead/pen/HfdKx.

+1

+1 для хорошей альтернативы –

+0

Спасибо, мне пришлось использовать это вместо этого, так как в моем случае я запускал команды JS через веб-браузер Android, который, очевидно, не поддерживает querySelectorAll. – Noob

4

Для этого вы можете использовать querySelectorAll.

var x = document.querySelectorAll("table[width='25%']"); 
for (var i=0; i<x.length; i++) { //returns array of elements that match the attribute selector 
    x[i].remove(); //call prototype method defined below 
} 

Удаления сложен, я нашел этот код, что делает хорошую методу удалить

Element.prototype.remove = function() { 
    this.parentElement.removeChild(this); 
} 
NodeList.prototype.remove = HTMLCollection.prototype.remove = function() { 
    for(var i = 0, len = this.length; i < len; i++) { 
     if(this[i] && this[i].parentElement) { 
      this[i].parentElement.removeChild(this[i]); 
     } 
    } 
} 

Это создает прототип функции remove(), что итерирует узел и удаляют ребенок.

Пожалуйста, обратите внимание, что querySelectorAll не будет работать в IE8 или ниже, но плакат способа-прототипа сказал, что он должен работать в IE8, но не 7.

+0

Работал отлично, спасибо :) – Noob

0

Да вы можете. Самый простой способ - использовать JQuery. В вашем яваскрипте кода, который вы бы просто написать:

$("[attribute=value]").remove() 

Так что в вашем случае это может быть что-то вроде $("table[width='25%']").remove()

+1

Абсолютно работает, но он не просил ответа jQuery. – SomeKittens

+0

Согласовано. Просто пытаюсь быть полезным. –

Смежные вопросы