obtener eliminar atributo agregar javascript html dom

javascript - eliminar - ¿Cómo iterar a través de todos los atributos en un elemento HTML?



setattribute javascript (4)

En caso de que alguien esté interesado en una versión filtrada, o intente crear selectores de atributos CSS, aquí tiene:

let el = document.body; Array.from(el.attributes) .filter(a => { return a.specified && a.nodeName !== ''class''; }) .map(a => { return ''['' + a.nodeName + ''='' + a.textContent + '']''; }) .join(''''); //outputs: "[name=value][name=value]

Sin duda, puede eliminar la unión para recuperar una matriz o agregar un filtro para "estilo", ya que en la mayoría de las aplicaciones web la etiqueta de estilo es ampliamente manipulada por widgets.

Necesito el código JavaScript para iterar a través de los atributos rellenos en un elemento HTML.

Esta referencia de Element.attributes dice que puedo acceder a ella a través del índice, pero no especifica si está bien soportado y si se puede usar (navegador cruzado).

O de alguna otra manera? (sin utilizar ningún framework, como jQuery / Prototype)


Esto funcionaría en IE, Firefox y Chrome (¿alguien puede probar los demás? Gracias, @Bryan):

for (var i = 0; i < elem.attributes.length; i++) { var attrib = elem.attributes[i]; console.log(attrib.name + " = " + attrib.value); }

EDITAR: IE itera todos los atributos que admite el objeto DOM en cuestión, sin importar si realmente se han definido en HTML o no.

Debe mirar la propiedad booleana attrib.specified para averiguar si el atributo realmente existe. Firefox y Chrome parecen ser compatibles con esta propiedad también:

for (var i = 0; i < elem.attributes.length; i++) { var attrib = elem.attributes[i]; if (attrib.specified) { console.log(attrib.name + " = " + attrib.value); } }


Más eficiente

Array.prototype.forEach.call(elm.attributes, attr => console.log(attr))


Otro método es convertir la colección de atributos en una matriz usando Array.from :

Array.from(element.attributes).forEach(attr => { // process attr })