Eu tenho o código abaixo para encontrar elementos com o nome da classe:
// 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++) {
}
Só não sei como removê-los ... tenho que referenciar os pais ou algo assim? Qual é a melhor maneira de lidar com isso?
@ Karim79:
Aqui está o 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]);
}
}
Aqui está o 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>
Edit: Acabamos usando apenas a opção jQuery.
javascript
removeclass
Brett
fonte
fonte
Respostas:
Usando jQuery (que você realmente poderia estar usando neste caso, eu acho), você poderia fazer o seguinte:
Caso contrário, você precisará usar o pai de cada elemento para removê-lo:
fonte
Se você preferir não usar o JQuery:
fonte
elements
matriz.getElementsByClassName
é uma coleção ao vivo. developer.mozilla.org/pt-BR/docs/Web/API/NodeListUsando o ES6, você poderia fazer como:
fonte
Em Javascript puro, sem jQuery ou ES6, você pode fazer:
fonte
Isso funciona para mim
fonte
Brett - você está ciente de que o
getElementyByClassName
suporte do IE 5.5 a 8 não existe de acordo com o modo quirks ? É melhor seguir esse padrão se você se preocupa com a compatibilidade entre navegadores:elements[i].parentNode.removeChild(elements[i])
como os outros caras disseram.Exemplo rápido:
Aqui está uma demonstração rápida.
EDIT: Aqui está a versão fixa, específica para sua marcação:
O problema foi minha culpa; quando você remove um elemento da matriz resultante, o comprimento é alterado, para que um elemento seja ignorado a cada iteração. A solução é armazenar uma referência para cada elemento em uma matriz temporária e, posteriormente, fazer um loop sobre eles, removendo cada um do DOM.
Experimente aqui.
fonte
Eu prefiro usar
forEach
overfor
/while
loop. A fim de usá-lo é necessário para converterHTMLCollection
aArray
primeira:Preste atenção, não é necessário da maneira mais eficiente. Apenas muito mais elegante para mim.
fonte
Uma linha
Por exemplo, você pode fazer nesta página para remover as informações do usuário
fonte
Sim, você precisa remover do pai:
fonte
Você pode usar esta sintaxe:
node.parentNode
Por exemplo:
fonte
A função recursiva pode resolver seu problema como abaixo
fonte
Caso você queira remover elementos que são adicionados dinamicamente, tente o seguinte:
fonte
OU
fonte
É muito simples, de uma linha, usar o operador de propagação ES6 devido document.getElementByClassName retorna uma coleção HTML.
fonte
Os elementos de ignição aparecem com erro (código acima)
pode ser corrigido apenas executando o loop para trás da seguinte maneira (para que a matriz temporária não seja necessária)
fonte
Você pode usar uma solução simples, basta alterar a classe, o filtro HTML Collection é atualizado:
Ref: http://www.w3.org/TR/2011/WD-html5-author-20110705/common-dom-interfaces.html
fonte