Home > Internet & Telecoms > Javascript Tutorial

Chapitre 1 | Chapitre 2 | Chapitre 3 | Chapitre 4 | Chapitre 5 | Chapitre 6 | Chapitre 7 | Chapitre 8 | Chapitre 9 | Chapitre 10

Chapitre 9 L'objet Array puis les frames...


9.1 Tableau à une dimension


L'objet Array (ou tableaux) est une liste d'éléments indexés dans lesquels on pourra ranger (écrire) des données ou aller reprendre ces données (lire). Attention ! L'objet Array est du Javascript 1.1

Pour faire un tableau, il faut procéder en deux étapes :

  • d'abord construire la structure du tableau. A ce stade, les éléments du tableau sont vides.

  • ensuite affecter des valeurs dans les cases ainsi définies.

On commence par définir le tableau : nom_du_tableau = new Array (x); où x est le nombre d'élément du tableau. On notera que généralement le nombre d'éléments est limité à 255. Ensuite, on va alimenter la structure ainsi définie : nom_du_tableau[i] = "elément"; où i est un nombre compris entre 0 et x moins 1.

Exemple : un carnet d'adresse avec 3 personnes. La construction du tableau : carnet = new Array(3);. L'ajout des données : carnet[0]="Pierre"; carnet[1]="Paul"; carnet[2]="Marie";Pour accéder ensuite à un élément : document.write(carnet[2]);

Parfois, il sera pratique de charger le tableau avec une boucle. Supposons que l'on ait à charger 30 images. Soit on le fait manuellement, il faut charger 0.gif, 1.gif, 2.gif... Soit on utilise une boucle du style :

function gifs() {
gif = new Array(30);
for (var=i;i<30;i++)
{gif[i] =i+".gif";}
}

Javascript étant un langage peu typé, il n'est pas nécessaire de déclarer le nombre d'élément du tableau (soit x). Javascript prendra comme nombre d'éléments, le nombre i le plus élevé lors de "l'alimentation" de la structure (en fait i + 1).


9.2 Propriétés et méthodes


Elément

Description

length

Retourne le nombre d'éléments du tableau.

join()

Regroupe tous les éléments du tableau dans une seule chaîne. Les différents éléments sont séparés par une caractère séparateur spécifié en argument. Par défaut, ce séparateur est une virgule.

reverse()

Inverse l'ordre des éléments (ne les trie pas).

sort()

Retourne les éléments par ordre alphabétique (à condition qu'ils soient de même nature)

Dans le cadre de notre exemple,
document.write(carnet.join()); donne comme résultat : Pierre, Paul, Marie.
document.write(carnet.join("-")); a comme résultat : Pierre-Paul-Marie.
document.write(carnet.reverse().join("-")); donne : Marie-Paul-Pierre.


9.3 Tableau à deux dimensions


On peut créer des tableaux à deux dimensions (et plus encore) par un petit artifice de programmation. On déclare d'abord un tableau à 1 dimension de façon classique : nom_du_tableau = new Array (x); Ensuite, on déclare chaque élément du tableau comme un tableau à 1 dimension : nom_du_tableau[i] = new Array(y);

Pour un tableau de 3 sur 3 :

Tarif

T. Small

T. Médium

T. Large

Chemises

1200

1250

1300

Polos

800

850

900

T-shirts

500

520

540

nom = new Array(3);
nom[0] = new Array(3);
nom[1] = new Array(3);
nom[2] = new Array(3);
nom[0][0]="1200"; nom[0][1]="1250"; nom[0][2]="1300";
nom[1][0]="800"; nom[1][1]="850"; nom[1][2]="900";
nom[2][0]="500"; nom[2][1]="520"; nom[2][2]="540";

Pour exploiter ces données, voici une illustration de ce qui est possible : Le formulaire s'écrit :

<FORM name="form" >
<SELECT NAME="liste">
<OPTION>Chemises
<OPTION>Polos
<OPTION>T-shirts
</SELECT>
<SELECT NAME="taille">
<OPTION>T. Small
<OPTION>T. Médium
<OPTION>T. Large
</SELECT>
<INPUT TYPE="button" VALUE="Donner le prix" onClick="affi(this.form)">
<INPUT TYPE="TEXT" NAME="txt">
</FORM>

où la fonction affi() se formule comme suit :

function affi() {
i = document.form.liste.selectedIndex;
j= document.form.taille.selectedIndex
document.form.txt.value=nom[i][j];
}


9.4 Généralités sur les frames


Utiliser des frames vous permet de diviser la fenêtre affichant votre page HTML en plusieurs cadres indépendants les uns des autres. Vous pouvez alors charger des pages différentes dans chaque cadre. En Javascript, nous nous intéresserons à la capacité de ces cadres à interagir. C'est à dire à la capacité d'échanger des informations entre les frames. En effet, la philosophie du HTML veut que chaque page composant un site soit une entité indépendante. Comment pourrait-on faire alors pour garder des informations tout au long du site ou tout simplement passer des informations d'une page à une autre page. Tout simplement en utilisant des frames.


9.5 Propriétés


Propriétés

Description

length

Retourne le nombre de frames subordonnés dans un cadre "créateur".

parent

Synonyme pour le frame "créateur".


9.6 Echange d'informations entre frames


Par l'exemple suivant, nous allons transférer une donnée introduite par l'utilisateur dans une frame, dans une autre frame.

La page "créatrice" des frames qui contient deux frames subordonnées "enfant1" et "enfant2" :

<HTML>
<HEAD>
</HEAD>
<FRAMESET ROWS="30%,70%">
<FRAME SRC="enfant1.htm" name="enfant1">
<FRAME SRC="enfant2.htm" name="enfant2">
</FRAMESET>
</HTML>

Le fichier enfant1.htm :

<HTML>
<BODY>
<FORM name="form1">
<INPUT TYPE="TEXT" NAME="en" value=" ">
</FORM>
</BODY>
</HTML>

Le fichier enfant2.htm :

<HTML>
<HEAD>
<SCRIPT LANGUAGE="Javascript">
<!--
function affi(form) {
parent.enfant1.document.form1.en.value=document.form2.out.value
}
// -->
</SCRIPT>
</HEAD>
<BODY>
Entrez une valeur et cliquez sur "Envoyer".
<FORM NAME="form2" >
<INPUT TYPE="TEXT" NAME="out">
<INPUT TYPE="button" VALUE="Envoyer" onClick="affi(this.form)">
</FORM>
</BODY>
</HTML>

La donnée entrée par l'utilisateur se trouve par le chemin document.form2.out.value. Nous allons transférer cette donnée dans la zone de texte de l'autre frame. Pour cela, il faut en spécifier le chemin complet. D'abord la zone de texte se trouve dans la frame subordonnée appelée enfant1. Donc le chemin commence par parent.enfant1. Dans cette frame se trouve un document qui contient un formulaire (form1) qui contient une zone de texte (en) qui a comme propriété value. Ce qui fait comme chemin document.form1.en.value. L'expression complète est bien : parent.enfant1.document.form1.en.value=document.form2.out.value.

[ HTML Language | Javascript Tutorial | Mobile Communications ]

©

Contact Information