usar style como javascript getelementsbyclassname

javascript - como - getelementsbyclassname style



¿Cómo eliminar una clase de elementos en JavaScript puro? (4)

Encontrar elementos:

var elements = document.getElementsByClassName(''widget hover'');

Dado que los elements son una matriz en live y reflejan todos los cambios dom, puedes eliminar todas las clases hover con un simple ciclo while:

while(elements.length > 0){ elements[0].classList.remove(''hover''); }

Me gustaría saber cómo seleccionar todos los elementos con los nombres de clase "widget" y "hover" y luego eliminar la clase "hover" de estos elementos.

Tengo el siguiente código JavaScript que selecciona todos los elementos con la clase "widget" y "hover":

var elements = document.getElementsByClassName(''widget hover''); console.log(elements);

Esto parece funcionar y produce algo como esto (sin errores):

[div#.widget...

El problema es que si trato de eliminar la clase "hover", aparece un error:

var elements = document.getElementsByClassName(''widget hover''); console.log(elements); elements.classList.remove("hover");

Esto produce:

[item: function] length: 0 Uncaught TypeError: Cannot call method ''remove'' of undefined

¿Alguien puede decirme lo que estoy haciendo mal?


Tenga en cuenta que lo tengo trabajando en jQuery:

$(''.widget.hover'').removeClass(''hover'');

... pero estoy buscando una solución en JavaScript puro.


Esto podría ayudar

let allElements = Array.from(document.querySelectorAll(''.widget.hover'')) for (let element of allElements) { element.classList.remove(''hover'') }


elementos es una matriz de objetos DOM. Deberías hacer algo como esto

for (var i = 0; i < elements.length; i++) { elements[i].classList.remove(''hover''); }

es decir: enumere la colección de elementos, y para cada elemento dentro de la colección llame al método remove


var elems = document.querySelectorAll(".widget.hover"); [].forEach.call(elems, function(el) { el.classList.remove("hover"); });

Puede parchar .classList en IE9. De lo contrario, deberá modificar el .className .

var elems = document.querySelectorAll(".widget.hover"); [].forEach.call(elems, function(el) { el.className = el.className.replace(//bhover/b/, ""); });

.forEach() también necesita un parche para IE8, pero eso es bastante común de todos modos.