125 votes

Comment ajouter/mettre à jour un attribut à un élément HTML à l’aide de javascript ?

Je suis en train de trouver un moyen qui va ajouter / mettre à jour d’attribut à l’aide de javascript. Je sais que je peux le faire avec la fonction SetAttribute, mais cela ne fonctionne pas dans Internet Explorer.

161voto

andi Points 5372

Vous pouvez lire ici sur le comportement des attributs avec de nombreux navigateurs différents, y compris IE.

devrait faire l’affaire, même dans Internet Explorer. Avez-vous essayé il ? Si cela ne fonctionne pas, que peut-être pourrait fonctionner.

36voto

JPearce Points 219

Ce qui semble facile, c'est effectivement difficile si vous voulez être complètement compatible.

var e = document.createElement('div');

Disons que vous avez un id de 'div1' ajouter.

e['id'] = 'div1';
e.id = 'div1';
e.attributes['id'] = 'div1';
e.createAttribute('id','div1')

Ce seront tous les travaux à l'exception de la dernière dans IE 5.5 (qui est l'ancienne histoire à ce point, mais est toujours XP par défaut avec pas de mises à jour).

Mais il y a des imprévus, bien sûr. Ne fonctionne pas dans IE avant 8:e.attributes['style'] Ne sera pas d'erreur, mais ne pas la classe, il faut className:e['class'] .
Toutefois, si vous utilisez des attributs de ce travail:e.attributes['class']

En résumé, pensez attributs comme littéral et orienté objet.

Dans le sens littéral, vous avez juste envie de cracher x='y' et ne pas y penser. C'est ce que les attributs, les setAttribute createAttribute (sauf pour IE style de l'exception). Mais parce que ce sont vraiment des objets de choses peuvent se confondre.

Puisque vous allez à la peine de bien la création d'un élément du DOM au lieu de jQuery innerHTML la pâtée, je voudrais le traiter comme un et le bâton avec l'e.className = 'fooClass' et e.id = 'fooID'. C'est une conception de préférence, mais dans ce cas, essayer de traiter est autre chose qu'un objet travaille contre vous.

Il ne sera jamais se retourner contre vous, comme les autres méthodes, juste être conscient de la classe nom de la classe et le style d'un objet de style.largeur de pas style="width:50px". Rappelez-vous aussi tagName mais c'est déjà définie par createElement de sorte que vous ne devriez pas besoin de s'inquiéter à ce sujet.

Ce fut plus long que ce que je voulais, mais CSS manipulation en JS est un travail délicat.

30voto

tvanfosson Points 268301

Obligatoire de solution de jQuery. Trouve et il affecte les attribuent à . Notez que cela sélectionne un élément unique puisque je le fais par id, mais vous pouvez facilement définir le même attribut sur une collection de changer le sélecteur.

7voto

annakata Points 42676

Que voulez-vous faire avec l’attribut ? Est-ce un attribut html ou quelque chose de vous-même ?

La plupart du temps vous pouvez simplement résoudre en tant que propriété : pour définir un titre sur un élément ? ``va le faire.

Pour votre propre personnalisé JS attribue le DOM est naturellement extensible (aka expando = true), le résultat simple qui est que vous pouvez faire `` et ensuite le lire sans problème.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X