Javascript est un langage dit "orienté objet", parce que la notion d'objet et celle de leur relation y est très importante.
Nous avons vaguement vu dans la page précédente comment changer le contenu d'un objet, il s'agissait en l'occurrence d'une image, mais on peut aussi bien obtenir l'état d'un bouton, ou le contenu d'un champ de texte (et le modifier) ou du document contenu dans une zone de texte.
Pour ce faire, il faut savoir que pour Javascript l'objet le plus élevé de la hiérarchie de la page web, le chef, c'est la fenêtre, en anglais (et donc en Javascript) "window". Comme tous les chefs, c'est un objet qui ne travaille pas (ou pas beaucoup) mais surtout qui est implicite, on n'a donc pas besoin de le mentionner sauf si on aime taper du texte sur un clavier, faire de la lèche, ou si on travaille avec plusieurs fenêtres ou des frames.
L'objet suivant, c'est le document HTML, en anglais "document", mais si vous avez une fenêtre avec des frames, il est donc nécessaire d'indiquer dans quelle fenêtre ou dans quel document vous voulez lire, écrire ou modifier un objet.
Ensuite ça se complique un peu, car il peut exister toutes sortes d'objets, des images (en anglais images), des liens, des formulaires, des boutons, du texte, etc...
Supposons, un instant que l'on veuille atteindre un bouton à l'intérieur d'un formulaire, la hiérarchie pour l'atteindre (autrement que par son nom) serait:
fenêtre (window)document (document)formulaire (form)bouton à cocher(checkbox) |
|
|
|
Il faut encore savoir que les objets sont séparés par un point, et que comme il peut y avoir plusieurs formulaires et plusieurs boutons dans chaque formulaire, certains objets sont automatiquement numérotés.
Ce qui donne: window.document.forms[0].checkbox[0] pour les puristes (ou la compatibilité maximum), et pour les fainéants: document.forms[0].checkbox[0], certains navigateur acceptent même: forms[0].checkbox[0], mais il vaut mieux éviter cela à tout prix.
Pourquoi [0] ? Et pourquoi pas partout ? Et bien tout simplement parce qu'il peut y avoir plusieurs formulaires dans un document et plusieurs boutons à cocher dans un formulaire, mais pas plusieurs documents en même temps dans la même fenêtre ou la même frame.
Nous avons utilisé une autre méthode dans l'exemple précédent pour atteindre une image, mais cette méthode implique que l'on donne un nom à l'objet voulu avec NAME="", ce qui à comme énorme avantage de permettre au script de continuer à fonctionner correctement si on déplace cette image par rapport à d'autres, mais nécessite de nommer tous les objets que l'on veut utiliser, à vous de voir ce que vous préférez.
On peut aussi utiliser le nom de l'objet directement, par exemple, si le formulaire s'appelle "enquete" (évitez les accents dans les noms d'objets) et le bouton s'appelle "courrier":
window.document.enquete.courrier (mais il n'est pas possible sous cette forme d'utiliser une variable contenant le nom de l'objet).
Et pour "simplifier" encore les choses on peut utiliser aussi depuis Javascript 1.2:
window.document.form["enquête"].button["courrier"] (ou: ...button[variable_x], variable_x contenant le nom de l'objet).
Pour la première image du document: document.images[0]
Pour la troisième: document.images[2] et oui, comme les tableaux partent de zéro, c'est comme ça !
Si ça ne vous plaît pas, donnez des noms aux objets et utilisez-les, de toutes façons, c'est bien plus simple et plus sûr dans le cas fréquent d'une mise à jour qui déplacerait l'ordre ou augmenterait le nombre des objets dans la page. |
Le moment est venu de voir une liste d'objets Javascript (version indéterminée et variable, sujette de toute façon à modifications) et leur hiérarchie pour savoir ce que le javascript permet de lire, écrire, tester ou modifier.
|