texto span obtener ejemplos ejemplo div contenido cambiar javascript removeclass

javascript - span - ¿Eliminar elementos por nombre de clase?



innerhtml jquery ejemplos (12)

Brett: ¿sabe usted que el soporte de getElementyByClassName de IE 5.5 a 8 getElementyByClassName está de getElementyByClassName ? Sería mejor seguir este patrón si le importa la compatibilidad entre navegadores:

  • Obtener contenedor elemento por ID.
  • Obtenga elementos secundarios necesarios por nombre de etiqueta.
  • Iterar sobre los niños, prueba la coincidencia de la propiedad className.
  • elements[i].parentNode.removeChild(elements[i]) como los otros tipos dijeron.

Ejemplo rápido:

var cells = document.getElementById("myTable").getElementsByTagName("td"); var len = cells.length; for(var i = 0; i < len; i++) { if(cells[i].className.toLowerCase() == "column") { cells[i].parentNode.removeChild(cells[i]); } }

Aquí hay una demostración rápida.

EDITAR: Aquí está la versión fija, específica para su marcado:

var col_wrapper = document.getElementById("columns").getElementsByTagName("div"); var elementsToRemove = []; for (var i = 0; i < col_wrapper.length; i++) { if (col_wrapper[i].className.toLowerCase() == "column") { elementsToRemove.push(col_wrapper[i]); } } for(var i = 0; i < elementsToRemove.length; i++) { elementsToRemove[i].parentNode.removeChild(elementsToRemove[i]); }

El problema fue mi culpa; cuando elimina un elemento de la matriz resultante de elementos, la longitud cambia, por lo que un elemento se omite en cada iteración. La solución es almacenar una referencia a cada elemento en una matriz temporal, y luego realizar un ciclo sobre esos, eliminando cada uno del DOM.

Pruébalo aquí.

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 ... ¿TENGO que 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: Bueno, terminé simplemente usando la opción jQuery.


En caso de que desee eliminar elementos que se agregan dinámicamente, intente esto:

document.body.addEventListener(''DOMSubtreeModified'', function(event) { const elements = document.getElementsByClassName(''your-class-name''); while (elements.length > 0) elements[0].remove(); });


Esto funciona para mí

while (document.getElementsByClassName(''my-class'')[0]) { document.getElementsByClassName(''my-class'')[0].remove(); }


Los elementos de omisión fallan en esto (código de arriba)

var len = cells.length; for(var i = 0; i < len; i++) { if(cells[i].className.toLowerCase() == "column") { cells[i].parentNode.removeChild(cells[i]); } }

se puede arreglar simplemente ejecutando el ciclo hacia atrás de la siguiente manera (para que la matriz temporal no sea necesaria)

var len = cells.length; for(var i = len-1; i >-1; i--) { if(cells[i].className.toLowerCase() == "column") { cells[i].parentNode.removeChild(cells[i]); } }


Prefiero usar forEach over for / while looping. Para utilizarlo es necesario convertir HTMLCollection en Array primero:

Array.from(document.getElementsByClassName("post-text")) .forEach(element => element.remove());

Presta atención, no es necesario de la manera más eficiente. Simplemente mucho más elegante para mí.


Puede usar esta sintaxis: node.parentNode

Por ejemplo:

someNode = document.getElementById("someId"); someNode.parentNode.removeChild(someNode);



Sí, debe eliminar del padre:

cur_columns[i].parentNode.removeChild(cur_columns[i]);


Si prefiere no usar JQuery:

function removeElementsByClass(className){ var elements = document.getElementsByClassName(className); while(elements.length > 0){ elements[0].parentNode.removeChild(elements[0]); } }


Sin jQuery, podrías hacer:

const elements = document.getElementsByClassName("my-class"); while (elements.length > 0) elements[0].remove();


Usando ES6 puedes hacer como:

const removeElements = (elms) => [...elms].forEach(el => el.remove()); // Use like: removeElements( document.querySelectorAll(".remove") );

<p class="remove">REMOVE ME</p> <p>KEEP ME</p> <p class="remove">REMOVE ME</p>


usando jQuery (que realmente podría estar usando en este caso, creo), podría hacer esto así:

$(''.column'').remove();

De lo contrario, necesitará usar el padre de cada elemento para eliminarlo:

element.parentNode.removeChild(element);