У меня есть приведенный ниже код для поиска элементов с их именем класса:
// Get the element by their class name
var cur_columns = document.getElementsByClassName('column');
// Now remove them
for (var i = 0; i < cur_columns.length; i++) {
}
Я просто не знаю, как их удалить ... Я ДОЛЖЕН сослаться на родителя или что-то в этом роде? Как лучше всего с этим справиться?
@ Karim79:
Вот JS:
var col_wrapper = document.getElementById("columns").getElementsByTagName("div");
var len = col_wrapper.length;
alert(len);
for (var i = 0; i < len; i++) {
if (col_wrapper[i].className.toLowerCase() == "column") {
col_wrapper[i].parentNode.removeChild(col_wrapper[i]);
}
}
Вот HTML:
<div class="columns" id="columns">
<div class="column"><input type="checkbox" name="col_list[]" value="cows">cows</div>
<div class="column"><input type="checkbox" name="col_list[]" value="cows">cows</div>
<div class="column"><input type="checkbox" name="col_list[]" value="cows">cows</div>
<div class="column"><input type="checkbox" name="col_list[]" value="cows">cows</div>
<div name="columnClear" class="contentClear" id="columnClear"></div>
</div>
Изменить: Ну, в итоге просто использовал опцию jQuery.
javascript
removeclass
Brett
источник
источник
Ответы:
Используя jQuery (который, я думаю, вы действительно могли бы использовать в этом случае), вы могли бы сделать это так:
В противном случае вам нужно будет использовать родительский элемент каждого элемента, чтобы удалить его:
источник
Если вы предпочитаете не использовать JQuery:
источник
elements
массив.getElementsByClassName
, это живая коллекция. developer.mozilla.org/en-US/docs/Web/API/NodeListИспользуя ES6, вы могли бы:
источник
В чистом Javascript, без jQuery или ES6, вы могли:
источник
Это работает для меня
источник
Бретт - Вы в курсе , что
getElementyByClassName
поддержка IE 5.5 до 8. Не существует согласно Quirksmode ?. Вам будет лучше следовать этому шаблону, если вы заботитесь о кросс-браузерной совместимости:elements[i].parentNode.removeChild(elements[i])
как сказали другие парни.Быстрый пример:
Вот небольшая демонстрация.
РЕДАКТИРОВАТЬ: вот фиксированная версия, специфичная для вашей разметки:
Проблема была в моей вине; когда вы удаляете элемент из результирующего массива элементов, длина изменяется, поэтому один элемент пропускается на каждой итерации. Решение состоит в том, чтобы сохранить ссылку на каждый элемент во временном массиве, а затем последовательно перебирать их, удаляя каждый элемент из DOM.
Попробуйте здесь.
источник
Я предпочитаю использовать
forEach
overfor
/while
loop. Для использования необходимо сначала преобразоватьHTMLCollection
вArray
:Обратите внимание, это не обязательно самый эффективный способ. Для меня это намного элегантнее.
источник
Одна линия
Например, на этой странице вы можете удалить информацию о пользователе.
источник
Да, нужно удалить из родительского:
источник
Вы можете использовать этот синтаксис:
node.parentNode
Например:
источник
Рекурсивная функция может решить вашу проблему, как показано ниже
источник
Если вы хотите удалить элементы, которые добавляются динамически, попробуйте следующее:
источник
ИЛИ
источник
Это очень просто, однострочно, с использованием оператора распространения ES6 из-за document.getElementByClassName возвращает коллекцию HTML.
источник
Ошибка пропуска элементов в этом (код сверху)
можно исправить, просто запустив цикл в обратном направлении, как показано ниже (чтобы временный массив не нужен)
источник
Вы можете использовать простое решение, просто измените класс, обновится фильтр HTML Collection:
Ссылка: http://www.w3.org/TR/2011/WD-html5-author-20110705/common-dom-interfaces.html
источник