7
votes

objet.classname ou objet.getatTtribute ("ClassName / Classe")?

entre les deux celles:

JavaScript xxx

ou xxx

html XXX

Les deux versions semblent fonctionner dans IE8, FF4, Chrome, Opera et Safari. ( Jsfiddle (amélioré) Démo )

lequel est la meilleure pratique d'utilisation et pourquoi? Avez-vous déjà rencontré un problème avec l'une ou l'autre version?


0 commentaires

4 Réponses :


9
votes

objet.getattribute ("classique"); ne fonctionne pas.

La différence est que getattribute obtient la valeur d'un attribut html tel qu'il est écrit dans le code HTML (à quelques exceptions près).

Ces valeurs sont principalement les valeurs initiales des propriétés de l'élément DOM . Mais l'accès à eux peut générer des valeurs différentes, en raison de la pré- / post-traitement.

Par exemple, si vous avez un élément, el.href vous donne l'URL complète (absolu), tandis que el.getattribute (' href ') vous donne l'URL comme il a été écrit dans le HTML.

La plupart du temps, vous souhaitez accéder aux propriétés de l'élément DOM, car ils reflètent l'état actuel de l'élément.


3 commentaires

Il fonctionnera dans IE 8 Quirks Mode et ci-dessous, car leur mise en œuvre ne prend que des noms de propriété DOM pour obtenir / set / set / retirer. Source: MSDN.MicRosoft.com/en- US / Bibliothèque / MS536739% 28V = VS.85% 29.aspx


objet.getatttribute ("CLASSNAME"); est requis pour IE 7 et moins réellement. Vous pouvez facilement deviner pourquoi ...: /


@Kraz: Je vois ... alors disons dans des implémentations appropriées , cela ne fonctionne pas;)



1
votes

Utilisez le premier.

C'est trieur. Cela fonctionne dans chaque navigateur même les très anciens qui ne prennent pas en charge GetatTtribute. Il aussi plus vite aussi.

Mais s'il vous plaît n'utilisez pas une fonction pour cela. Il suffit d'utiliser ceci.classname et cela.classname = 'NewClass'. L'utilisation d'une fonction est surchargée pour cela.


0 commentaires

6
votes

getattribute ("classe") est plus universel, car il peut être utilisé dans différents types de documents. Dans XML Documents, surtout. Y compris SVG.

élément.classname ne fonctionne que dans HTML. Il est décrit dans le Spécifications HTML de niveau 2 DOM < / a>.


0 commentaires

0
votes

Selon MDN WebDocs, il est préférable d'utiliser Setattribute / getattribute, car ollement.classname n'est pas toujours la chaîne de classes. Si votre est un chemin SVG, ollement.classname sera soudainement une instance d'un SvganimatedString :

Nom de classe peut également être une instance de svganimatedstring si l'élément est un svgelement. Il est préférable d'obtenir / définir le nom de classe d'un ELEMENT UTILISANT ÉLÉMENT.GETTATRIBUTE ET ELEMENT.SETATTRIBUTE Si vous êtes Traiter avec des éléments SVG. Cependant, prenez en compte que Élément.gettattribute renvoie null au lieu de "" si l'élément a un Attribut de classe vide.

Source: https: //developer.mozilla .Org / fr-US / Docs / Web / API / Elément / Nom de classe # Notes


0 commentaires