10
votes

Comment puis-je définir de manière fiable la classe Att W / JavaScript sur IE, FF, Chrome, etc.?

J'utilise le code JS ci-dessous afin de modifier la classe lorsqu'un lien est cliqué sur un lien.

document.getElementById("gifts").setAttribute("className", "gkvSprite selected");


1 commentaires

Votre titre est trompeur, GetElementyID fonctionne bien, votre problème est avec la manipulation de la classe de la classe.


3 Réponses :


14
votes

Vous pouvez utiliser de manière fiable la propriété classname au lieu de setattribute : xxx

plus généralement, il y a quelques noms d'attributs qui Différents navigateurs traitent différemment dans setattribute : class vs classname et pour vs. code> htmlfor . Bibliothèques comme prototype , jQuery , etc. va lisser ces différences pour vous, bien que (encore) dans la situation spécifique de la classe , vous pouvez utiliser de manière fiable la propriété.


0 commentaires

1
votes

Vous pouvez y aller de quelques égards.

Si vous souhaitez utiliser setattribute Vous pouvez détecter quel navigateur utilise le client, puis utilisez Classe dans IE et Nom de classe dans Firefox.

Ce qui précède fonctionnerait, mais je préférerais d'utiliser un div et d'affecter une nouvelle classe pour cela. xxx

ou comme tj Crowder a dit ci-dessus. Asign via Nom de classe Directy.


1 commentaires

En ce qui concerne la détection du navigateur: dans au moins 90% de ces situations, vous êtes beaucoup mieux avec une «détection de fonctionnalités» plutôt que sur le navigateur reniflant. Dans ce cas, par exemple, le prototype vérifie si le navigateur réel vous utilisez utilise Classe ou Nom de classe (en le testant une fois et que vous vous souveniez de quoi passé). Le navigateur reniflant est sujette à la défaillance de différentes manières, notamment de se faire obsoluer lorsque les navigateurs évoluent. Vous vous retrouvez avec d'énormes chaînes logiques autour de la version du navigateur et du navigateur ...



0
votes

Si #gifts a une transition chronométrée CSS3 définie sur CSS, Setattribute (et RemoVeAttribute, et d'autres commandes JS) échouent également dans certains navigateurs. Le JavaScript doit être retardé jusqu'à ce que la transition soit terminée avant de pouvoir le modifier.


0 commentaires