Tengo el siguiente código para encontrar elementos con su nombre de clase:
// 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++) {
}
Simplemente no sé cómo eliminarlos ... ¿DEBO hacer referencia al padre o algo así? ¿Cuál es la mejor manera de manejar esto?
@ Karim79:
Aquí está el 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]);
}
}
Aquí está el 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>
Editar: Bien terminó usando la opción jQuery.
javascript
removeclass
Brett
fuente
fuente
Respuestas:
Usando jQuery (que realmente podría estar usando en este caso, creo), podría hacerlo así:
De lo contrario, necesitará usar el padre de cada elemento para eliminarlo:
fuente
Si prefiere no usar JQuery:
fuente
elements
matriz.getElementsByClassName
es una colección en vivo. developer.mozilla.org/en-US/docs/Web/API/NodeListUsando ES6 podría hacer como:
fuente
En Javascript puro, sin jQuery o ES6, podría hacer:
fuente
Esto funciona para mi
fuente
Brett: ¿eres consciente de que el
getElementyByClassName
soporte de IE 5.5 a 8 no está disponible según el modo peculiar ? Sería mejor seguir este patrón si le interesa la compatibilidad entre navegadores:elements[i].parentNode.removeChild(elements[i])
como dijeron los otros chicos.Ejemplo rápido:
Aquí hay una demostración rápida.
EDITAR: Aquí está la versión fija, específica de su marcado:
El problema fue mi culpa; cuando elimina un elemento de la matriz de elementos resultante, la longitud cambia, por lo que se omite un elemento en cada iteración. La solución es almacenar una referencia a cada elemento en una matriz temporal, luego hacer un bucle sobre ellos, eliminando cada uno del DOM.
Pruébalo aquí
fuente
Prefiero usar
forEach
overfor
/while
looping. Para usar es necesario convertirHTMLCollection
aArray
primero:Presta atención, no es necesario la forma más eficiente. Simplemente mucho más elegante para mí.
fuente
Una línea
Por ejemplo, puede hacerlo en esta página para eliminar userinfo
fuente
Sí, debe eliminar del padre:
fuente
Puedes usar esta sintaxis:
node.parentNode
Por ejemplo:
fuente
La función recursiva puede resolver su problema como a continuación
fuente
En caso de que desee eliminar elementos que se agregan dinámicamente, intente esto:
fuente
O
fuente
Es muy simple, de una sola línea, utilizando el operador de propagación ES6 debido document.getElementByClassName devuelve una colección HTML.
fuente
El error de elementos omitidos en esto (código de arriba)
se puede solucionar simplemente ejecutando el bucle hacia atrás de la siguiente manera (para que no se necesite la matriz temporal)
fuente
Puede usar una solución simple, simplemente cambie la clase, el filtro de la Colección HTML se actualiza:
Ref: http://www.w3.org/TR/2011/WD-html5-author-20110705/common-dom-interfaces.html
fuente