getAttribute
récupère le attribut d'un élément DOM, tandis que el.id
récupère le propriété de cet élément DOM. Ils ne sont pas identiques.
La plupart du temps, les propriétés DOM sont synchronisées avec les attributs.
Cependant, la synchronisation ne garantit pas la même valeur . Un exemple classique est celui des relations entre el.href
y el.getAttribute('href')
pour un élément d'ancrage.
Par exemple :
<a href="http://stackoverflow.com/" id="hey"></a>
<script>
var a = document.getElementById('hey')
a.getAttribute('href') // "/"
a.href // Full URL except for IE that keeps '/'
</script>
Ce comportement se produit parce que, selon le W3C la propriété href doit être un lien bien formé. La plupart des navigateurs respectent cette norme (devinez qui ne la respecte pas ?).
Il y a un autre cas pour le input
's checked
propriété. La propriété DOM renvoie true
o false
tandis que l'attribut renvoie la chaîne de caractères "checked"
ou une chaîne vide.
Et puis, il y a certaines propriétés qui sont synchronisées unidirectionnel seulement . Le meilleur exemple est le value
d'un input
élément. Changer sa valeur via la propriété DOM ne changera pas l'attribut (edit : vérifier le premier commentaire pour plus de précision).
Pour ces raisons, je vous suggère de continuer à utiliser le DOM propriétés et non les attributs, car leur comportement diffère d'un navigateur à l'autre.
En réalité, il n'y a que deux cas où vous devez utiliser les attributs :
- Un attribut HTML personnalisé, car il n'est pas synchronisé avec une propriété DOM.
- Pour accéder à un attribut HTML intégré, qui n'est pas synchronisé à partir de la propriété, et que vous êtes sûr d'avoir besoin de l'attribut (par exemple, l'attribut original
value
d'un input
élément).
Si vous voulez une explication plus détaillée, je vous conseille vivement de lire cette page . Cela ne vous prendra que quelques minutes, mais vous serez enchanté par les informations (que j'ai résumées ici).
1 votes
Question similaire : Propriétés et attributs en HTML