Méthode getAttribute()
Jusqu'à présent, nous vous avons présenté deux façons de récupérer des nœuds d'éléments spécifiques : l'une consiste à utiliser la méthode getElementById() et l'autre consiste à utiliser la méthode getElementsByTagName(). Après avoir trouvé cet élément, nous pouvons utiliser la méthode getAttribute() pour interroger les valeurs de ses différents attributs.
La méthode getAttribute() est une fonction. Il n'a qu'un seul paramètre : le nom de l'attribut que vous souhaitez interroger :
objet.getAttribute(attribut)
Cependant, la méthode getAttribute() ne peut pas être appelée via l'objet document, contrairement aux autres méthodes que nous avons présentées précédemment. Nous ne pouvons l'appeler que via un objet nœud d'élément.
Par exemple, vous pouvez le combiner avec la méthode getElementsByTagName() pour interroger l'attribut title de chaque élément
var text=document.getElementsByTagName("p") for (var i=0;i<text.length;i++) { alert(text[i].getAttribute("title")); }
Il n'y a qu'un seul élément
avec un attribut title dans le document "Liste de courses". Si ce document comporte également un ou plusieurs éléments
sans attribut title, l'appel getAttribute("title") correspondant renverra null. Null est la valeur nulle dans le langage JavaScript, ce qui signifie « la chose dont vous parlez n'existe pas ». Si vous souhaitez vérifier cela par vous-même, insérez d'abord le texte suivant dans votre document Liste de courses après le paragraphe de texte existant :
Ceci est juste un test
var ts=document.getElementsByTagName("li"); for (var i=0; i<ts.length;i++) {text=ts[i].getAttribute("title"); if(text!=null) { alert(text) } }
Nous pouvons même raccourcir ce code. Lorsqu'on vérifie si une donnée est nulle, on vérifie en réalité si elle existe. Cette vérification peut être simplifiée en utilisant directement les données vérifiées comme condition de l'instruction if. if (something) est complètement équivalent à if (something != null), mais le premier est évidemment plus concis. À ce moment-là, si quelque chose existe, la condition de l'instruction if sera vraie ; si quelque chose n'existe pas, la condition de l'instruction if sera fausse.
Spécifique à cet exemple, tant que nous remplaçons if (title_text != null) par if (title_text), nous pouvons obtenir un code plus concis. De plus, afin d'augmenter encore la lisibilité du code, on peut également en profiter pour écrire l'instruction alter et l'instruction if sur la même ligne, ce qui peut les rapprocher des phrases anglaises de notre quotidien :
var ts=document.getElementsByTagName("li"); for (var i=0; i<ts.length;i++) {text=ts[i].getAttribute("title"); if(text) alert(text) }
Toutes les méthodes que nous vous avons présentées précédemment ne peuvent être utilisées que pour récupérer des informations. La méthode setAttribute() présente une différence essentielle avec elles : elle permet de modifier la valeur du nœud d'attribut.
Semblable à la méthode getAttribute(), la méthode setAttribute() est également une fonction qui ne peut être appelée que via l'objet nœud élément, mais la méthode setAttribute() nous oblige à lui passer deux paramètres :
obiect.setAttribute(attribut,valeur)
Dans l'exemple suivant, la première instruction récupérera l'élément dont la valeur d'attribut id est Purchase, et la deuxième instruction définira la valeur d'attribut title de cet élément sur une liste de marchandises :
var shopping=document.getElementById("purchases") shopping.setAttribute("title","a list of goods")
var shopping=document.getElementById("purchases"); alert(shopping.getAttribute("title")); shopping.setAttribute("title","a list of goods"); alert(shopping.getAttribute("title"));
Dans l'exemple ci-dessus, nous définissons l'attribut title d'un nœud existant, mais cet attribut n'existait pas à l'origine. Cela signifie que l'appel setAttribute() que nous avons émis a en fait effectué deux opérations : d'abord créé l'attribut, puis défini sa valeur. Si nous utilisons la méthode setAttribute() sur un attribut existant d'un nœud d'élément, la valeur actuelle de cet attribut sera écrasée.
Dans le document exemple "Liste de courses", l'élément
possède déjà un attribut title dont la valeur est un petit rappel. Nous pouvons utiliser la méthode setAttribute() pour changer sa valeur actuelle :
<script type="text/javascript"> var ts=document.getElementsByTagName("li"); for (var i=0; i<ts.length;i++) { var text=ts[i].getAttribute("title"); alert(ts[i].getAttribute("title")) if(text) { ts[i].setAttribute("title","我会成功!") alert(ts[i].getAttribute("title")) } }
Le code ci-dessus récupérera d'abord tous les éléments
avec des attributs de titre du document, puis modifiera toutes leurs valeurs d'attribut de titreen un tout nouveau texte de titre. Spécifique au document "Liste de courses", la valeur de l'attribut un petit rappel sera remplacée.
Il y a un détail qui mérite attention ici : les modifications apportées au document via la méthode setAttribute() entraîneront des changements correspondants dans l'effet d'affichage et/ou le comportement du document dans la fenêtre du navigateur, mais lorsque nous utilisons la vue du navigateur Lorsque vous affichez le code source d'un document à l'aide de l'option source, vous verrez toujours les valeurs d'attribut d'origine - c'est-à-dire que les modifications apportées par la méthode setAttribute() ne seront pas reflétées dans le code source du document lui-même. Ce phénomène « d'incohérence entre l'apparence et l'intérieur » vient du mode de fonctionnement du DOM : charger d'abord le contenu statique du document, puis le rafraîchir dynamiquement. Le rafraîchissement dynamique n'affecte pas le contenu statique du document. C'est là le véritable pouvoir et l'attrait du DOM : l'actualisation du contenu de la page ne nécessite pas que l'utilisateur final effectue une opération d'actualisation de la page dans son navigateur.