Liste déroulante des URL (script)

Si vous désirez créer une liste déroulante des URL, WebExpert met à votre disposition cet assistant.

Pour lancer l'assistant, cliquez sur le bouton Liste déroulante des URL (script) de l'onglet Javascript...

1. Listes déroulantes créées avec l'assistant


2. Étapes de réalisation avec l'assistant

3. Éléments insérés par l'assistant

a) Boîte liste à menu

<FORM>
<SELECT NAME="liste1" SIZE=1>
<OPTION SELECTED VALUE="">-------- FAITES VOTRE CHOIX--------
<OPTION VALUE="JVTM.html">Introduction
<OPTION VALUE="notionsgen.html">Notions générales
</SELECT>
<INPUT TYPE="button" VALUE="OK" >
onClick="if (form.liste1.selectedIndex != 0) location =>
form.liste1.options[form.liste1.selectedIndex].value;
else alert('Veuillez faire un choix au menu.')">
</FORM>

b) Boîte liste

<SELECT NAME="liste2" SIZE=3>
<OPTION VALUE="JVTM.html" SELECTED>Introduction de TutorJS
<OPTION VALUE="notionsgen.html">Notions générales
</SELECT>
<INPUT TYPE="button" VALUE="OK" onClick="location =
form.liste2.options[form.liste2.selectedIndex].value;">
</FORM>

4. Explication

Le procédé est assez simple mais efficace. En fait, il s'agit d'attribuer à la propriété location (propriété définie de JS qui concerne l'adresse URL du document) la valeur correspondant au choix effectué dans la boîte liste (avec menu ou non).

Pour votre facilité, il est présenté ici les deux possibilités, à savoir une boîte liste à menu et une boîte liste simple.

On emploie dans ce javascript l'élément <SELECT> qui permet d'afficher un menu de sélection et permet de choisir une réponse unique (ou multiple).

La différence entre les deux options proposées par l'assistant se résume à peu de choses en réalité : c'est l'attribut SIZE de l'élément <SELECT> qui va prendre une valeur différente (SIZE=1 pour une boîte liste et SIZE=>1 pour une boîte liste à menu).

L'assistant va incorporer quelques éléments supplémentaires, pour la boîte à liste (sans menu) :

Dans l'élément <SELECT> ont été créées différentes balises <OPTION>, qui correspondent exactement aux nombres d'URL encodées dans l'assistant. Chacune de celles-ci a été associée à un texte qui décrit l'URL proposée, par exemple :

<OPTION VALUE="JVTM.html" SELECTED>Introduction de TutorJS

La valeur (value) de la balise <OPTION> contient donc l'URL du fichier HTML que l'on propose dans cette option, ci-dessus : JVTM.html.

L'élément <SELECT> est identifié (NAME="liste1") dans l'exemple de la boîte liste à menu ou (NAME="liste2") dans la boîte à liste et se trouve inséré dans un élément <FORM>.

Les boutons de commande

Dans chaque exemple, l'assistant a opté ici pour créer un bouton de commande, avec un code différent pour les deux boîtes liste :

Boîte liste à menu

<INPUT TYPE="button" VALUE="OK" onClick="if (form.liste1.selectedIndex != 0)
location = form.liste1.options[form.liste1.selectedIndex].value;
else alert('Veuillez faire un choix au menu.')">

Une instruction conditionnelle (if) est employée pour signaler que la balise <OPTION>, sélectionnée par défaut (<OPTION SELECTED VALUE="">-------- FAITES VOTRE CHOIX--------) ne correspond pas à un choix valable. Cette condition vérifie que la position dans le menu (Index) est différent de 0 (position déterminée pour le message d'information) par le code d'identification (form.liste1.selectedIndex) qui correspond à la position de l'option sélectionnée, de la boîte liste (liste1), contenue dans l'élément form.

Si la position retourne une valeur = 0 (pas !=0), dans ce cas, un message d'alerte est donné par la méthode alert() : alert('Veuillez faire un choix au menu.').

Lorsque la valeur retournée n'est pas 0 (différente de 0 : !=0), alors la location (propriété définie location de JS qui concerne l'adresse URL du document) prendra pour valeur la valeur de l'option sélectionnée dans la boîte liste à menu (liste1) : location = form.liste1.options[form.liste1.selectedIndex].value et le navigateur chargera le fichier concerné.

Boîte liste

<INPUT TYPE="button" VALUE="OK" onClick="location =
form.liste2.options[form.liste2.selectedIndex].value;">

Dans ce choix de boîte liste, il n'y a pas de possibilité d'erreur (puisque l'utilisateur visionne directement les options) et donc, l'assistant n'a pas placé d'instruction conditionnelle, mais uniquement le code qui attribue à la propriété location la valeur de l'option sélectionnée dans la boîte liste (liste2) : location = form.liste2.options[form.liste2.selectedIndex].value.

Pour les deux boîte liste, une option est sélectionnée par défaut, par l'attribut spécifique : SELECTED.

Événement

C'est l'événement onClick des boutons qui est choisi (pour les deux boîtes liste) qui lance l'attribution de la valeur à la propriété location. Nous verrons que l'on peut choisir un autre événement (paragraphe "variante" ci-dessous).

5. Modifications des paramètres

Vous pouvez ajouter et/ou supprimer des options, par l'ajout ou la suppression d'une balise <OPTION>, et éventuellement modifier la valeur (SIZE=) de l'élément <SELECT> si la boîte liste est trop petite (cas de boîte liste à menu), par exemple :

<SELECT NAME="liste2" SIZE=4>
<OPTION VALUE="autrefichier.html">Une autre page

Modifier les textes descriptifs pour chaque URL ou le fichier HTML correspondant à chaque description.

6. Variante

Nous avons vu que l'assistant a choisi comme option de proposer le changement de location (URL) par l'événement onClick des boutons. Il est très facile de se passer de bouton en placant l'événement déclencheur, non pas dans un bouton, mais dans l'élément <SELECT> lui-même, mais en employant dans ce cas, non pas l'événement onClick, mais un plus approprié, à savoir "onChange". Voici le même exemple, mais réalisé de cette façon :

Il n'y a donc plus de bouton, puisque l'événement déclencheur est l'événement "onChange", placé dans l'élément <SELECT>.

Voici le code HTML de l'élément <SELECT>, ainsi modifié :

Boîte liste à menu

<SELECT NAME="liste3" SIZE=1 onChange="if (form.liste3.selectedIndex != 0)
location = form.liste3.options[form.liste3.selectedIndex].value;
else alert('Veuillez faire un choix au menu.')">

Boîte liste

<SELECT NAME="liste4" SIZE=3 onChange="location =
form.liste4.options[form.liste4.selectedIndex].value;">

7. Remarque

Si vous avez omis d'indiquer la cible (nom du cadre de destination), vous pouvez l'ajouter par le code HTML de la propriété location suivant : parent.frames['bas'].location = qui indique tout simplement au navigateur que c'est pour le cadre (frame) appelé "bas" qui doit recevoir le document HTML à charger. La propriété parent correspond à la fenêtre parent du cadre (frame) actif.





Cliquez sur le bouton du script pour visionner son explication...