Comment parcourir tous les attributs d'un élément HTML?
J'ai besoin du code JavaScript pour itérer sur les attributs d'un élément HTML.
Ce De l'élément.attributs réf dit que je peux y accéder via l'index, mais ne précise pas si il est bien pris en charge et peut être utilisé (cross-browser).
Ou de toute autre manière? (sans utiliser de cadres, comme jQuery /Prototype)
Vous devez vous connecter pour publier un commentaire.
Ce serait le travail dans IE, Firefox et Chrome (quelqu'un peut-il tester les autres s'il vous plaît? — Merci, @Bryan):
EDIT: c'est à dire itère tous attributs de l'objet DOM en question prend en charge, peu importe si elles ont effectivement été défini en HTML ou pas.
Vous devez regarder le
attrib.specified
propriété Booléenne pour savoir si l'attribut existe réellement. Firefox et Chrome semblent appuyer cette propriété ainsi:elem
n'est pas défini. Ce que je fais mal ici?var elem = document.getElementById("Something");
, mais ça ne fonctionne pas non plus, comme on le voit ici.id = Something
pour moi, ce qui est exactement ce qui est censé se produire. Vous attendiez-vous à autre chose?attributes
tant de fois; cache dans une variable locale!O(n^2)
, oùn
est le nombre d'attributs. Si vous ne modifiez pas laO()
d'un algorithme, c'est bien, mais écrire quelque chose dansO(n)
au lieu deO(n^2)
est une bonne pratique, pas prématuré, de l'OMI.elem.attributes.length
est très probablement O(1),elem.attributes[i]
est certainement O(1) - donc, comme je vois la chose entière est O(n). Mais même si je me trompe: Il n'a pas d'importance. Si vous appelez cela pour chaque élément sur votre page, vous le faites mal, de toute façon. L'enfer, même alors, il ne prend que 8ms pour cette page ici sur mon rusty ordinateur portable. Et c'est avec jQuery$.each()
. En bref: je ne pouvais pas moins de soins sur l'exécution caractéristiques de ce bit.Une autre méthode consiste à convertir la collection d'attribut d'un tableau à l'aide
Array.à partir de
:Au cas où quelqu'un est intéressé par une version filtrée, ou est en train d'essayer de construire attribut CSS sélecteurs, ici vous allez:
Vous pouvez certainement supprimer la jointure pour récupérer un tableau ou d'ajouter un filtre pour le "style", car dans la plupart des applications web de la balise style est largement manipulé par des widgets.
Plus efficace