J'essaie de trouver un moyen d'ajouter / de mettre à jour l'attribut en utilisant JavaScript. Je sais que je peux le faire avec la setAttribute()
fonction, mais cela ne fonctionne pas dans IE.
javascript
html
cross-browser
développeur
la source
la source
document.getElementById("nav").setAttribute("class", "active");
cela fonctionne dans la console Chrome JS, mais dans la page actuelle, cela ne fonctionne pas .. des idées? À propos, dans la page réelle, j'inclus le.js
fichier avant la fin de labody
portée.Ce qui semble facile est en fait délicat si vous voulez être complètement compatible.
Disons que vous avez un identifiant de «div1» à ajouter.
Ceux-ci fonctionneront tous sauf le dernier dans IE 5.5 (qui est de l'histoire ancienne à ce stade mais qui est toujours par défaut de XP sans mises à jour).Mais il y a des contingences, bien sûr. Ne fonctionnera pas dans IE avant 8:
e.attributes['style']
ne l' erreur , mais ne sera pas mis en fait la classe, il doit être className:e['class']
.Cependant, si vous utilisez des attributs, cela fonctionnera:
e.attributes['class']
En résumé, considérez les attributs comme littéraux et orientés objet.
En littéral, vous voulez juste qu'il crache x = 'y' et ne pas y penser. C'est à cela que servent les attributs, setAttribute, createAttribute (à l'exception de l'exception de style d'IE). Mais comme ce sont vraiment des objets, les choses peuvent devenir confuses.
Puisque vous allez vous donner la peine de créer correctement un élément DOM au lieu de jQuery innerHTML slop, je le traiterais comme un élément et m'en tenir à e.className = 'fooClass' et e.id = 'fooID'. Il s'agit d'une préférence de conception, mais dans ce cas, essayer de traiter est comme autre chose qu'un objet fonctionne contre vous.
Cela ne vous retournera jamais comme les autres méthodes, sachez simplement que la classe est className et que le style est un objet, donc c'est style.width et non style = "width: 50px". Souvenez-vous également de tagName, mais il est déjà défini par createElement, vous ne devriez donc pas vous en préoccuper.
C'était plus long que je ne le souhaitais, mais la manipulation CSS dans JS est une affaire délicate.
la source
id
, pas avec quelque chose d'autre commedata-toggle
Solution jQuery obligatoire . Recherche et définit l'
title
attribut surfoo
. Notez que cela sélectionne un seul élément puisque je le fais par id, mais vous pouvez facilement définir le même attribut sur une collection en changeant le sélecteur.la source
Que voulez-vous faire avec l'attribut? Est-ce un attribut html ou quelque chose de votre choix?
La plupart du temps, vous pouvez simplement l'adresser comme une propriété: vous voulez donner un titre à un élément?
element.title = "foo"
le fera.Pour vos propres attributs JS personnalisés, le DOM est naturellement extensible (aka expando = true), le simple résultat est que vous pouvez le faire
element.myCustomFlag = foo
et le lire ensuite sans problème.la source