Académique Documents
Professionnel Documents
Culture Documents
Scientifique
Direction Générale des Etudes Technologiques
SUPPORT DE COURS
Programmation Web 2
Natija BOUZIDI
Assistante technologue à ISET Sidi Bouzid
AU : 2015-2016
Support de Cours : Programmation Web 2 –TI1 ISET Sidi Bouzid
Avant Propos
L’auteur
Natija BOUZIDI
Support de Cours : Programmation Web 2 –TI1 ISET Sidi Bouzid
Fiche matière
PRE REQUIS
Programmation web1, algorithmique et structure de données 1 et Atelier
Développement Web et Multimédia I
OBJECTIFS GENERAUX
A la fin de ce module, l’étudiant doit être capable de :
Découvrir et comprendre l'ensemble des concepts de base du langage côté client :
JavaScript.
Etudier la syntaxe de base du JS
;<= Maîtriser la syntaxe d’un langage de script coté client
Apprendre à programmer les contrôles des champs d’un formulaire.
Comprendre des notions relatives à XML.
POPULATION
Profil : Licence
Spécialité : Technologies de l’informatique.
Niveau : L1(S2)
DEROULEMENT
Volume horaire : 1h 30 de cours intégré /semaine
Durée : 15 semaines
EVALUATION
Tests
Interrogation Orale
Devoir de contrôle et devoir de synthèse
MOYEN PEDAGOGIQUE
Tableau
Polycopiés de Travaux Dirigés
Support de Cours : Programmation Web 2 –TI1 ISET Sidi Bouzid
II.7. La sélection........................................................................................................................ 48
II.8. L’envoi .............................................................................................................................. 48
II.9. Le reset .............................................................................................................................. 48
III. Exercices d’application ......................................................................................................... 49
Chapitre n°5 : Le DOM en JavaScript................................................................................................... 50
I. Définition................................................................................................................................... 51
II. La structure DOM ................................................................................................................. 51
III. Accès aux éléments ............................................................................................................... 52
III.1. getElementById() .......................................................................................................... 52
III.2. getElementsByTagName() ............................................................................................ 52
III.3. getElementsByName() .................................................................................................. 52
III.4. querySelector() et querySelectorAll() ........................................................................... 53
IV. Edition des éléments .............................................................................................................. 53
IV.1. Les attributs : Via l'objet Element ................................................................................. 53
IV.2. La classe ........................................................................................................................ 53
IV.3. Récupérer du HTML ..................................................................................................... 53
IV.4. innerText ....................................................................................................................... 53
V. Noeuds DOM ............................................................................................................................ 53
VI. Manipuler les éléments de l’arbre DOM ............................................................................... 55
VII. Exercices d’application ......................................................................................................... 56
Chapitre n°6 : Langage XML ................................................................................................................ 59
I. XML, qu'est ce que c'est ? ......................................................................................................... 60
I.1. Définition........................................................................................................................... 60
I.2. Exemple ............................................................................................................................. 60
II. Pourquoi XML ? .................................................................................................................... 61
II.1. Caractéristiques de HTML ................................................................................................ 62
II.2. Caractéristiques de XML................................................................................................... 62
III. Les principales utilisations de XML...................................................................................... 63
III.1. Le stockage de données pour des raisons d’archivage .................................................. 63
III.2. L’échange de données entre systèmes hétérogènes ....................................................... 63
IV. Intérêt de XML ...................................................................................................................... 63
IV.1. Séparation stricte entre contenu et présentation ............................................................ 63
IV.2. Simplicité, universalité et extensibilité .......................................................................... 64
IV.3. Format texte avec gestion des caractères spéciaux ........................................................ 64
IV.4. Structuration forte.......................................................................................................... 64
IV.5. Format libre ................................................................................................................... 65
Support de Cours : Programmation Web 2 –TI1 ISET Sidi Bouzid
Objectifs spécifiques
Plan du chapitre
Introduction au JS
Le besoin en JavaScript
Volume horaire :
1 heure et demi
I. Le besoin en JavaScript
Pour pallier à ses lacunes deux catégories de solutions ont été proposées :
Utilisation des langages côté client (JavaScript ou le VbScript) : ce sont des langages
qui permettent d’ajouter toutes les fonctionnalités omises au niveau du langage HTML,
tel que les structures algorithmiques à part celles qui concernent la connexion à des
bases de données et le verrouillage de code. L’avantage majeur de cette catégorie de
solutions est le fait de pouvoir exécuter le code écrit avec ses langages sans nécessiter
une installation particulière, il suffit d’avoir un navigateur web. Le JavaScript est le plus
utilisé vu sa compatibilité avec les différents navigateurs.
Utilisation des langages côté serveur (ASP, PHP, …) : ses Langages permettent d’avoir
les mêmes fonctionnalités que les langages côte client plus la possibilité de se connecter
à des bases de données.
Le langage JavaScript est un langage de script développé par les sociétés Netscape et Sun
Microsystems vers la fin de l'année 1995. Il s’agit d’un langage interprété, qui permet de réaliser
de la programmation multimédia dynamique.
Ce langage permet d’introduire de l'interactivité avec les pages HTML, et effectuer des
traitements simples sur le poste de travail de l'utilisateur.
Contrairement à ce que pourrait laisser penser son nom, JavaScript n’est pas apparenté avec le
langage Java. Il vaut mieux considérer qu’il s’agit de deux langages complètement différents.
Pour programmer avec JavaScript, il faut introduire de petits programmes, appelés SCRIPTS,
dans les pages HTML.
C'est un langage basé sur des objets, très simple et conçu, en principe, pour des non spécialistes.
Les principales caractéristiques et avantages de ce langage sont:
JS est un langage de programmation structurée qui concourt à enrichir le HTML, à le
rendre plus "intelligent" et interactif.
Le code JS est intégré complètement dans le code HTML, et interprété par le navigateur
client ;
JS comporte une syntaxe intégrant la notion de programmation objet (limité aux objets
simples : String, Date, Image, Tableau, … ).
JS contient des gestionnaires d'événement : il reconnaît et réagit aux demandes de
l'utilisateur, comme un clic de la souris, une validation de formulaire, etc...
Mais c'est un langage limité :
ce n'est pas un langage de programmation à part entière, indépendant.
c'est un langage de script, dépendant de HTML, c'est une extension de HTML.
ce n'est pas véritablement un langage orienté objet (pas d'héritage de classe, ni de
polymorphisme...)
Le langage JavaScript est un langage interprété, il n’a donc pas besoin d’être compilé ;
en revanche, il est nécessaire de disposer d’un interpréteur JavaScript pour pouvoir exécuter
des scripts JavaScript. Comme c’est la machine cliente qui se charge du traitement JavaScript,
c’est elle qui doit donc disposer d’un interpréteur JavaScript.
Remarque :
La méthode writeln() est fort proche de write() à ceci près qu'elle ajoute un retour chariot à la
fin des caractères affichés par l'instruction
D’abord il faut préciser que rien n'interdit de mettre plusieurs scripts dans une même page
Html. En effet, on peut inclure un ou plusieurs codes JavaScript entre les deux balises<BODY>
et </BODY> ou même entre le <HEAD> et </HEAD>.
Ce dernier emplacement est généralement utilisé pour la déclaration des fonctions.
Les différentes solutions permettant l’insertion du code JavaScript dans une page HTML sont :
La première consiste à insérer des instructions JavaScript entre
<SCRIPT>....</SCRIPT> dans la partie <BODY> et </BODY> ;
La seconde consiste à déclarer des fonctions puis les appeler entre <BODY> et
</BODY> ;
La troisième à utiliser un des gestionnaires d’évènements, rattachés aux balises HTML,
pour appeler des fonctions préalablement définies.
Dans le langage JavaScript, les opérations d’Entrées/Sorties sont utilisées comme suit :
L’entrée (lecture) : est faisable soit avec la méthode prompt de l’objet window, soit à
l’aide d’objets graphiques du formulaire HTML.
La sortie (écriture) : est possible en utilisant la méthode write de l’objet document, la
méthode alert de l’objet window ou à l’aide d’objets graphiques du formulaire HTML.
Syntaxes :
L’entrée :
nom_variable = prompt("texte de la boite d'invite","valeur par défaut");
La sortie :
document.write(" message " + nom_variable) ;
Alert(" message " + nom_variable) ;
Exemples
A=prompt("Donner votre numéro ","");
Document.write("Votre moyenne en Programmation Web2 est ="+M);
alert("Votre moyenne en Programmation Web2 est = "+M);
Remarque :
Les Entrées/Sorties à l’aide des objets graphiques des formulaires seront traitées ultérieurement.
III. Exercices d’application
Exercice n°1 :
Exercice n°2 :
Exercice n°3 :
Objectifs spécifiques
Plan du chapitre
Syntaxe de base du JS
Volume horaire :
3 heures
I. Généralités
Le langage JavaScript a une syntaxe qui se rapproche des langages C/C++ :
Le JavaScript est sensible à la casse : la variable « A » n’est pas la même que « a ».
Comme en langage C, chaque instruction se termine par un point-virgule (;).
Un nombre à virgule (réel) est séparé par un point (.) et non par une virgule (12.75).
Pour mettre en commentaire toute une ligne on utilise le double slach (//commentaires).
Pour mettre un commentaire sur plusieurs lignes, on utilise le */ et le /*.
Les niveaux d’imbrication de boucle sont indiquées avec les caractères ‘{’ et ‘}’ ;
Pour que l’interpréteur JavaScript puisse reconnaître du code JavaScript, on l’insère
dans la page HTML à l’aide de la balise <script>.
II. Les variables
En JavaScript, le type d’une variable n’est pas explicité. Le type de la variable est donc
fixé en fonction de son contenu.
Comme tout langage informatique, JS possède des opérateurs pour effectuer les calculs.
On prend dans les exemples, x=11 et y=5 ;
Les chaînes de caractères peuvent être délimitées aussi bien par le caractère « ' ' »
(apostrophe) que par le caractère « " " » (guillemets).
On peut concaténer les chaînes facilement avec l’opérateur ‘+’ (plus).
Certains caractères peuvent être insérés dans les chaînes de caractères : le retour arrière (\b), le
saut de page (\f), le saut de ligne (\n), l’entrée (\r), la tabulation (&) et l’apostrophe (\’).
On peut définir des tableaux grâce au mot clé Array. Plus qu’un mot clé, il s’agit en fait
d’un objet. Pour définir un tableau, on effectue donc une instanciation de la classe Array (avec
le mot clé new ).
Exemple:
var tab1 = new Array();
var tab2 = new Array('Jean','Michel');
var tab3 = new Array(2);
tab3[0] = 'Jean';
Les tableaux sont dynamiques, c’est-à-dire que la taille s’adapte automatiquement en
fonction du nombre de valeurs enregistrées. On peut aussi définir des tableaux associatifs, ainsi
que des tableaux multi-dimensions.
III. Les structures de contrôle
Elles sont identiques au langage C.
while (condition) {
/* instructions */
}
IV.1. Définition
C’est un groupe d’instruction prédéfini et exécuté lorsqu’il est appelé et que l’on peut
appeler plusieurs fois.
En JavaScript, il existe deux types de fonctions :
les fonctions propres à JavaScript, appelées méthodes. Elles sont associées à un objet
en particulier.
les fonctions que vous définissez vous-même. Ce sont celles qui nous intéressent ici.
IV.2. Déclaration
Le nom d’une fonction suit les mêmes règles que celui d’une variable. Chaque nom de
fonction doit être unique dans un même script. Les parenthèses sont obligatoires même si il n’y
a pas d’arguments, puisque JavaScript reconnaît une fonction grâce à elles.
Il est plus prudent de placer les déclarations de fonctions dans l’en-tête <head>…</head>
pour qu’elles soient prises en compte par l’interpréteur avant leur exécution dans le corps de
la page <body>…</body>
Syntaxe :
nom_de_la_fonction();
Il faut que la fonction ait été définie avant l’appel, étant donné que l’interpréteur lit le
script de haut en bas.
On peut passer plusieurs paramètres à une fonction, en séparant les paramètres par des virgules.
Syntaxe :
function nom_de_la_fonction(arg1, arg2, arg3) {
instructions
}
Exemple:
function cube(nombre) {
y = nombre*nombre*nombre;
return y; //retour de valeur
}
x = cube(5); //appel avec paramètre
document.write(x); //résultat
Une variable déclarée dans une fonction par le mot-clé var aura une portée limitée à cette
seule fonction. On l'appelle donc variable locale et ne pourra être utilisé dans le reste du script.
Exemple:
function cube(nombre) {
var c = nombre*nombre*nombre ;
}
Si la variable est déclarée sans utiliser le mot var, sa portée sera globale.
Les variables déclarées tout au début du script, en dehors et avant toutes fonctions, seront
toujours globales, qu'elles soient déclarées avec var ou de façon contextuelle.
Exemple:
var cube=1
function cube(nombre) {
var cube = nombre*nombre*nombre ;
}
IV.7.1. eval
Cette fonction exécute un code JavaScript à partir d'une chaîne de caractères.
...
<SCRIPT LANGUAGE="JavaScript">
function evaluation() {
document.formulaire.calcul.value=eval(document.formulaire.saisie.value); }
</SCRIPT>
...
<FORM NAME="formulaire">
Saisissez une expression mathématique : <INPUT TYPE="text" NAME=saisie
MAXLENGTH=40 SIZE=40>
<INPUT TYPE="button" VALUE="evaluation." onClick="evaluation()">
<INPUT TYPE="text" NAME=calcul MAXLENGTH=40 SIZE=40>
</FORM>...
IV.7.2. isFinite
Détermine si le paramètre est un nombre fini. Renvoie false si ce n'est pas un
nombre ou l'infini positif ou infini négatif.
isFinite(240) //retourne true
isFinite("Un nombre") //retourne false
IV.7.3. isNaN
détermine si le parametre n’est pas un nombre (NaN : Not a Number).
isNaN("un nombre") //retourne true
isNaN(20) //retourne false
IV.7.4. parseFloat
analyse une chaîne de caractères et retourne un nombre décimal.
Si l'argument évalué n'est pas un nombre, renvoie NaN (Not a Number).
var numero="125";
var nombre=parseFloat(numero); //retourne le nombre 125
IV.7.5. parseInt
analyse une chaîne de caractères et retourne un nombre entier de la base spécifiée.
La base peut prendre les valeurs 16 (hexadécimal) 10 (décimal), 8 (octal), 2
(binaire).
var prix=30.75;
var arrondi = parseInt(prix, 10); //retourne 30
IV.7.6. Number
convertit l'objet spécifié en valeur numérique
var jour = new Date("December 17, 1995 03:24:00"); /*converit la date en millisecondes*/
alert (Number(jour));
IV.7.7. String
convertit l'objet spécifié en chaîne de caractères
jour = new Date(430054663215); /*Convertit le nombre en date Mois jour, Annéee etc.*/
alert (String(jour));
IV.7.8. Escape
retourne la valeur hexadécimale à partir d'une chaîne de caractère codée en ISO-
Latin-1.
escape("!&") //retourne %21%26%
V. Exercices d’application
Exercice n°1:
Créer un document HTML contenant un script JavaScript qui permet d'entrer un prix hors taxe
puis calcule et affiche le prix TTC pour un taux de TVA de 18%.
Exercice n°2 :
Écrire un programme HTML contenant un script JavaScript qui demande trois nombres a, b et
c et qui effectue une permutation circulaire, donc rend c, a, b (la valeur de c doit être dans la
variable a, la valeur de a dans la variable b et la valeur b dans la variable c).
Exercice n°3 :
Écrire un programme HTML contenant un script JavaScript qui demande deux nombres et rend
le plus grand.
Exercice n°4 :
Écrire un programme HTML contenant un script JavaScript qui demande le nombre de notes,
puis calcule la moyenne.
Enseignante : Mme Natija BOUZIDI 18
Support de Cours : Programmation Web 2 –TI1 ISET Sidi Bouzid
Exercice n°5 :
Écrire un programme HTML contenant un script JavaScript qui affiche tous les nombres
impairs inferieurs à N après avoir demandé N.
Exercice n°6 :
Écrire un programme HTML contenant un script JavaScript faisant apparaitre les nombres
premiers compris entre 0 et 100.
Exercice n°7 :
Ecrire en JavaScript une fonction qui permet de tester si un nombre donnée est premier ou non.
(Si nombre premier la fonction retourne « true », si non retourne « false »)
Exercice n°8 :
Ecrire en JavaScript une fonction Somme et multiplie qui permet de calculer la somme et la
multiplication des entiers de 0 à n. (Écrire les deux fonctions de deux façons (sans et avec
argument)).
Exercice n°9 :
Ecrire en JavaScript une fonction qui retournera la racine quatrième de la valeur passée en
argument.
Exercice n°10 :
Ecrire une fonction qui permette de donner la factorielle d’un nombre positif de trois façon, à
l'aide d'une boucle for, boucle while puis de manière récursive.
Explication :
factorielle(n) = 1×2×3×4×...×n = n!
Est définie récursivement par 0! = 1 et lorsque n>0 par n! = n × (n-1)!
Objectifs spécifiques
Plan du chapitre
Objet en JavaScript
Objet String
Objet Date
Objet Array
Objet Image
Volume horaire :
4 heure et demi
I. Notion objet
Un objet, en général, possède des caractéristiques et des compétences. On peut voir ces
caractéristiques et utiliser les compétences. En informatique, un objet possède des variables et
des fonctions, qui permettent de décrire son comportement. Ces variables sont appelées
propriétés et ces fonctions sont appelées méthodes. De cette façon, on peut voir les propriétés
et utiliser les méthodes.
Un objet est créé en utilisant une fonction spéciale de la classe, précédée du mot new.
Cette fonction est appelée constructeur, et porte le nom de la classe. Un objet est appelé
instance de la classe.
Syntaxe :
var objet = new classe ();
Exemple:
var montableau = new Array ();
I.3. Accès aux propriétés et aux méthodes
On accède aux propriétés, et aux méthodes, d’un objet en accolant l’objet et sa propriété
avec l’opérateur « . ».
Syntaxe :
objet.propriété
objet.méthode()
II. L’objet math
II.1.4. Constantes
Math.PI, Math.LN2, Math.LN10, Math.E, Math.LOG2E, Math.LOG10E
II.2. Simplification
Si vous utilisez beaucoup l’objet math, l’écriture deviendra vite pénible. Il est possible de
ne pas avoir à écrire le mot "Math" à chaque fois. Il suffit d’encadrer la zone de code par des
accolades et l’expression with(Math).
Syntaxe :
with (Math) {
code...
}
Exemple :
with (Math) {
x = sqrt (238) ;
y = sin (x) ;
document.write(y) ;
}
III. L’objet string
III.1. Généralités
Un objet string est une chaîne de caractères. Il possède une propriété et plusieurs
méthodes. Cette classe permet la manipulation des caractères qui s’avère très utile en JS. Il est
à préciser que l’objet string ne se construit pas comme les autres objets. Une chaîne de caractère
est un objet string.
Enseignante : Mme Natija BOUZIDI 22
Support de Cours : Programmation Web 2 –TI1 ISET Sidi Bouzid
III.2. La propriété
Syntaxe :
variable1 = variable2.length ;
variable = (“chaine”).length ;
Exemple:
x = "Mon château" ;
y = x.length ;
document.write(y) ;
III.3. Les méthodes
III.3.1. CharAt ()
Cette méthode renvoie le caractère situé à la position x fournie en paramètre. Le numéro
de la position est compris entre 0 et la longueur de la chaîne –1.
Syntaxe :
chaine1 = chaine2.charAt(x) ;
chaine1 = (“chaine”).charAt(x) ;
chaine1 = charAt(chaine2,x) ;
Exemple:
x = "Mon Château" ;
y = x.charAt(4) ;
document.write(y) ;
III.3.2. IndexOf ()
Cette méthode renvoie la première position d’une chaîne partielle dans une autre chaîne
en partant de gauche, à partir de la position x indiquée en paramètre. Si elle n’est pas présente,
la méthode renvoie –1. Le numéro de la position est compris entre 0 et la longueur de la chaîne
–1.
Syntaxe :
variable = chaine.indexOf (chaine_partielle, x)
Exemple:
x = "maman" ;
y = x.indexOf("ma",0) ;
document.write(y) ;
III.3.3. LastIndexOf ()
Elle renvoie la première position d’une chaîne partielle dans une autre chaîne en partant
de gauche, à partir de la position x indiquée en paramètre. Si elle n’est pas présente, la méthode
renvoie –1.
Enseignante : Mme Natija BOUZIDI 23
Support de Cours : Programmation Web 2 –TI1 ISET Sidi Bouzid
Exemple:
x = "maman" ;
y = x.lastIndexOf("ma",4) ;
document.write(y) ;
III.3.4. Substring ()
Cette méthode renvoie la sous-chaîne comprise entre les positions x et y indiquées en
paramètres, dans la chaîne principale.
Syntaxe :
variable = chaine.substring (x,y)
Exemple:
x = "maman" ;
y = x.substring(1,3) ;
document.write(y) ;
III.3.5. Substr ()
Cette méthode renvoie le texte une sous-chaîne de la String de la méthode, à partir du
début et sur n caractères.
Syntaxe :
variable = chaine1.substr(début, n)
Exemple:
y = "un texte";
document.write(y.substr(5,2)) ;
III.3.6. Slice ()
Equivalent à substring(). La fin est facultative.
Syntaxe :
variable = chaine.slice(début, fin)
Exemple:
y = " un texte ";
document.write(y.slice(7)) ;
III.3.7. Split ()
Cette méthode renvoie un tableau de sous-chaînes découpées selon le séparateur passé en
paramètres.
Syntaxe :
variable = chaine.split(séparateur)
Exemple:
x = " un texte " ;
y = x.split("@") ;
document.write(y[0] + "<br>" + y[1]) ;
III.3.8. Concat ()
Cette méthode renvoie la concaténation de la chaîne passée en paramètre avec celle de la
méthode.
Syntaxe :
variable = chaine1.concat(chaine2)
Exemple:
x = "Ecrivez-moi à " ;
y = " un texte ";
z = x.concat(y) ;
document.write(z) ;
III.3.9. ToLowerCase ()
Cette méthode renvoie la chaîne avec tous les caractères en minuscules
Syntaxe :
variable = chaine.toLowerCase()
Exemple:
x = "MAMAN" ;
y = x.toLowerCase() ;
document.write(y) ;
III.3.10. ToUpperCase ()
Cette méthode renvoie la chaîne avec tous les caractères en majuscules
Syntaxe :
variable = chaine.toUpperCase()
Exemple:
x = "Maman" ;
y = x.toUpperCase() ;
document.write(y) ;
III.3.11. FontColor ()
Cette méthode renvoie le texte de l’objet en y ajoutant les balises <font
color=couleur>…</font>.
Syntaxe :
variable = chaine1.fontColor(couleur)
Exemple:
y = " un texte ";
document.write(y.fontColor("blue")) ;
III.3.12. FontSize ()
Cette méthode renvoie le texte de l’objet en y ajoutant les balises <font
size=taille>…</font>.
Syntaxe :
variable = chaine1.fontSize(taille)
Exemple:
y = " un texte ";
document.write(y.fontSize("16")) ;
III.3.13. Fixed ()
Cette méthode renvoie le texte de l’objet en y ajoutant les balises <pre>…</pre>.
Syntaxe :
variable = chaine1.fixed()
Exemple:
y = " un texte ";
document.write(y.fixed()) ;
III.3.14. Bold ()
Cette méthode renvoie le texte de l’objet en y ajoutant les balises <b>…</b>.
Syntaxe :
variable = chaine1.bold()
Exemple:
y = " un texte ";
document.write(y.bold()) ;
III.3.15. Strike ()
Cette méthode renvoie le texte de l’objet barré.
Syntaxe :
variable = chaine1.strike()
Exemple:
y = " un texte ";
document.write(y.strike()) ;
III.3.16. Sub ()
Cette méthode renvoie le texte de l’objet en y ajoutant les balises <sub>…</sub>.
Syntaxe :
variable = chaine1.sub()
Exemple:
y = " un texte ";
document.write(y.sub()) ;
III.3.17. Big ()
Cette méthode renvoie le texte de l’objet en y ajoutant les balises <big>…</big>.
Syntaxe :
variable = chaine1.big()
Exemple:
y = " un texte ";
document.write(y.big()) ;
III.3.18. Sup ()
Cette méthode renvoie le texte de l’objet en y ajoutant les balises <sup>…</sup>.
Syntaxe :
variable = chaine.sup()
Exemple:
y = " un texte ";
document.write(y.sup()) ;
III.3.19. Blink ()
Cette méthode renvoie le texte de l’objet en y ajoutant les balises <blink>…</blink>. Ne
fonctionne que sous Netscape
Syntaxe :
variable = chaine.blink()
Exemple:
y = " un texte ";
document.write(y.blink()) ;
III.3.20. Small ()
Cette méthode renvoie le texte de l’objet en y ajoutant les balises <small>…</small>.
Syntaxe :
variable = chaine.small()
Exemple:
Enseignante : Mme Natija BOUZIDI 27
Support de Cours : Programmation Web 2 –TI1 ISET Sidi Bouzid
III.3.21. Italics ()
Cette méthode renvoie le texte de l’objet en y ajoutant les balises <i>…</i>.
Syntaxe :
variable = chaine.italics()
Exemple:
y = " un texte ";
document.write(y.italics()) ;
III.3.22. Link ()
Cette méthode renvoie le texte de l’objet en y ajoutant les balises <a href=URL >…</a>.
Syntaxe :
variable = chaine1.link(URL)
Exemple:
y = " un texte ";
document.write(y.link("http://www.google.fr")) ;
III.3.23. Anchor ()
Cette méthode crée un ancre,et renvoie le texte de l’objet en y ajoutant les balises <a
name=ancre >…</a>.
Syntaxe :
variable = chaine1.anchor(ancre)
Exemple:
y = " un texte "
document.write(y.anchor("ancre")) ;
IV. L’objet date
IV.1. Généralités
La date et l’heure sont regroupées en JS dans la classe Date. On créé alors une variable
Date grâce au constructeur.
Syntaxe :
variable =new Date()
La date et l’heure en JS ne commencent qu’à partir du 1er janvier 1970, 0h 0min 0s. Toute
référence à une date antérieure donnera un résultat aléatoire.
IV.2.1. Get
Une fois notre variable Date créée, il faut lui donner les informations sur la date et l’heure
actuelle. Les fonctions suivantes remplissent la variable – qui est une chaîne – Date avec les
données courantes. Elles utilisent toutes la même syntaxe, ce sont des méthodes objet.
Syntaxe :
variable1 =new Date()
variable2 = variable1.getInfo();
getYear() : Retourne les 2 derniers chiffres de l’année. Il faudra donc rajouter le préfixe
"20".
getFullYear() : Retourne la date sur 4 chiffres.
getMonth() : Retourne le mois sous la forme d’un entier compris entre 0 et 11.
getDate() : Retourne le jour du mois sous forme d’un entier compris entre 1 et 31.
getDay() : Retourne le jour de la semaine sous forme d’un entier compris entre 0 et 6.
getHours() : Retourne l’heure sous forme d’un entier compris entre 0 et 23.
getMinutes() : Retourne les minutes sous forme d’un entier compris entre 0 et 59.
getSeconds() : Retourne les secondes sous forme d’un entier compris entre 0 et 59.
getMilliseconds() : retourne les millisecondes de la date. A ne pas confondre avec
getTime().
IV.2.2. Set
Il est aussi possible de remplir la variable Date avec nos propres données. Les fonctions
suivantes remplissent la variable – qui est une chaîne – Date avec les données que vous voulez.
Elles utilisent toujours la même syntaxe, ce sont des méthodes objet.
Syntaxe :
variable1 = new Date()
variable2 = variable1.setInfo();
setYear() : Assigne les 2 derniers chiffres de l’année, sous forme d’un entier supérieur
à 1900.
setYear() : Assigne l’année sur 4 chiffres.
setMonth() : Assigne le mois sous la forme d’un entier compris entre 0 et 11.
setDate() : Assigne le jour du mois sous forme d’un entier compris entre 1 et 31.
setDay() : Assigne le jour de la semaine sous forme d’un entier compris entre 0 et 6.
setHours() : Assigne l’heure sous forme d’un entier compris entre 0 et 23.
setMinutes() : Assigne les minutes sous forme d’un entier compris entre 0 et 59.
setSeconds() : Assigne les secondes sous forme d’un entier compris entre 0 et 59.
setMilliseconds() : assigne les millisecondes de la date. A ne pas confondre avec
setTime().
IV.2.3. L’heure
L’heure est très utile en JS, elle possède donc plusieurs méthodes utiles. La syntaxe est
toujours la même.
Syntaxe :
variable1 =new Date()
variable2 = variable1.méthode();
getTime() : Renvoie l’heure courante sous forme d’un entier représentant le nombre de
V. L’objet array
V.1. Généralités
L’objet Array n’est rien d’autre qu’un tableau. Un tableau est en quelque sorte une liste
d’éléments indexés que l’on pourra lire – chercher les données - ou écrire – entrer les données
– à volonté.
Comme tout objet, l’objet Array possède une propriété et des méthodes qui s’avèrent
assez utiles.
V.3.1. Propriété
L’objet Array ne possède qu’une propriété – length – qui désigne le nombre d‘éléments
du tableau.
Syntaxe :
variable = new Array (x) ;
y = variable.length ;
Exemple:
var MonTableau = new Array (2) ;
document.write (MonTableau.length) ;
V.3.2. Méthodes
L’objet Array possède plusieurs méthodes qui permettent de manier les éléments du
tableau.
Syntaxe :
tableau.méthode() ;
join (séparateur) : regroupe tous les éléments du tableau en une seule chaîne. Chaque
élément est séparé par un séparateur. Ci celui-ci n’est pas précisé, ce sera une virgule.
reverse () : inverse l’ordre des éléments sans les trier.
sort () : Renvoie les éléments par ordre alphabétique, s’ils sont de même nature.
concat(tableau) : concatène le tableau passé en paramètre avec celui de la méthode.
pop() : supprime le dernier élément du tableau.
push(élément1,…) : ajoute l(es) élément(s) passé(s) en paramètre à la fin du tableau.
shift() : supprime le premier élément du tableau.
slice(début,fin) : renvoie les éléments contenus entre la position supérieure ou égale à
début et inférieure à fin.
splice(début, nombre, éléments) : supprime les éléments à partir de la position début et
sur nombre de position. Les éléments sont remplacés par ceux fournis en paramètre
(facultatif).
unshift(élément1,…) : ajoute l(es) élément(s) passé(s) en paramètre au début du tableau.
Exemple:
var MonTableau = new Array (4) ;
MonTableau [0] = “Moi” ;
MonTableau [1] = “Toi” ;
MonTableau [2] = “Lui” ;
MonTableau [3] = “Elle” ;
MonTableau.reverse() ;
document.write (MonTableau.join(‘ ‘)) ;
MonTableau.sort() ;
document.write ("<br>" + MonTableau.join(‘ ‘)) ;
VI.1. L’objet
La classe Image correspond à la balise HTML <img>. Cette partie permet de manipuler
les images de façon dynamique, ce qui est impossible avec le HTML. On rappellera que les
images sont stockées dans le tableau images[] de l’objet document.
Grâce à un objet Image, on peut pré-charger une image et la stocker en cache,
contrairement au HTML. L’image ne sera cependant pas affichée. Elle le sera à l’aide de la
balise <img>.
Un objet Image est appelé selon la syntaxe objet habituelle, avec le constructeur Image().
L’objet possède alors les propriétés de la balise HTML <img>.
VI.2.1. Syntaxe
Un objet Image possède plusieurs propriétés, que l’on peut assimiler aux attributs de la
balise <img>.
Syntaxe :
variable = new Image();
variable.propriété = x ;
var2 = variable.propriété ;
VI.2.2. Src
Il s’agit de l’URL absolue ou relative le l’image. Elle peut être modifiée. Cela permet de
charger en cache l’image lors du chargement de la page.
Exemple:
<img src="0.gif" name="image1"
onMouseOver="document.image1.src='2.gif';"
onMouseOut="document.image1.src='0.gif';">
VI.2.3. Name
C’est le nom défini par l’attribut name="…" de la balise <img>. A ne pas confondre avec
l’ID. Permet de trouver l’image dans le tableau document.images[].
Exemple:
<img src="0.gif" name="image1" onMouseOver="alert('Adresse de
l\'image : ' + document.images['image1'].src);">
VI.2.4. Id
C’est l’ID défini par l’attribut id="…" de la balise <img>. A ne pas confondre avec le
nom. Permet de retrouver l’image grâce à la méthode document.getElementById().
Exemple:
<img src="0.gif" name="image1" onMouseOver="alert('Adresse de
l\'image : ' + document.getElementById('image1').src);">
VI.2.5. Width
Il s’agit de la largeur de l’image. Elle contient la valeur de l’attribut width de la balise
<img>. Si cet attribut n’est pas précisé, elle contient la largeur réelle de l’image. Ne peut être
modifiée.
Exemple:
VI.2.6. Height
Il s’agit de la hauteur de l’image. Elle contient la valeur de l’attribut height de la balise
<img>. Si cet attribut n’est pas précisé, elle contient la hauteur réelle de l’image. Ne peut être
modifiée.
Exemple:
<img src="0.gif" name="image1" onMouseOver="alert('Hauteur de
l\'image : ' + document.getElementById('image1').height);">
VI.2.7. Complete
C’est un booléen qui indique si le chargement de l’image est terminé. Renvoie true si le
chargement est achevé et false dans le cas contraire.
Exemple:
<img src="0.gif" name="image1"
onMouseOver="alert(‘chargement complété ? ' +
document.getElementById('image1').complete);">
VI.2.8. Alt
Elle contient le texte qui affiché avant la chargement de l’image et en info-bulle
lorsqu’elle est survolée. Contient la valeur de l’attribut alt="…" de la balise <img>. Ne peut
être modifiée.
Exemple:
<img src="0.gif" name="image1" alt="Image"
onMouseOut="alert(‘alt : ' +
document.getElementById('image1').alt);">
VI.2.9. FileSize
Elle contient la taille en octets de l’image. N’est accessible que lorsque le chargement est
terminé, d’où l’utilité de la propriété complete.
Exemple:
<img src="0.gif" name="image1" alt="Image"
onMouseOver="alert(‘Octets : ' +
document.getElementById('image1').fileSize);">
VI.3. Afficher une image
Il suffit de prendre l’élément <img> voulu dans la page et de changer sa propriété. Cet
élément est assimilé à un objet Image, faisant partie de l’objet document.
Exemple:
document.image1.src = ‘img2.jpg’ ;
Dans ce cas précis, l’image change et img2.jpg est affiché dans le champ image1.
L’intérêt de créer un objet Image reste donc discutable, puisqu’on ne l’utilise pas…
L’objet image permet de stocker l’image en cache au moment du chargement de la page. Il ne
reste plus qu’à trouver le moyen de l’afficher… De plus, on peut créer un tableau d’objets
Image, ce qui nous facilitera les manipulations ensuite.
4. Extraction d’une chaîne : Ecrire la fonction Extract(txt), dont le code JavaScript saisit
une chaîne ayant le format d’une adresse URL complète puis extrait de cette URL celle du
serveur.
Exemple : La chaîne saisie est = "http://www.technologie-web.com/app/fr/index.html"
L’URL du serveur = www.technologie-web.com
4. Définir en JavaScript un tableau contenant des notes d'étudiants comprises entre 0 et 20.
Implémenter en JavaScript les fonctions qui permettent d'afficher un tel tableau, de savoir
combien d'étudiants ont eu 10 plus, de calculer la moyenne des notes, de connaître la note
maximale, Compte et affiche le nombre d'apparitions d'un élément dans un tableau et
Indique si un élément est présent dans un tableau ou non.
Objectifs spécifiques
Plan du chapitre
Volume horaire :
3 heures
I. Les formulaires
Sans les formulaires, les pages HTML ne proposent aucune interactivité avec l’utilisateur.
En effet, la page appelée est envoyée par le serveur et le browser ne fait que l’afficher, il ne
peut rien faire avec le serveur. Les champs de formulaire (form) permettent l’utilisateur d’entrer
des informations auxquelles la page pourra réagir. Cela reste assez limité, puisque l’interaction
ne quitte pas la machine du client, mais on peut effectuer quelques traitements.
Chaque formulaire doit être encadré par les balises <form>…</form>. Toutes les balises
seront comprises entre ces deux-là.
Si vous travaillez avec PHP ou un autre langage (langage de script coté serveur), vous
aurez sûrement besoin d’envoyer les informations à un serveur. Dans ce cas, vous indiquez dans
la balise <form> la méthode (post ou get) et l’URL du script qui traitera l’information.
Exemple:
<form method=’post’ action=’traitement.php’>
………
</form>
Si vous désirez que les informations du formulaire vous soient envoyées par mail,
précisez ‘mailto:…’ dans l’action.
Exemple:
<form method=’post’ action=’mailto:e-mail’>
………
</form>
Dans chaque cas, n’oubliez pas d’insérer un bouton submit dans votre formulaire.
value : la valeur que vous voulez afficher dans la ligne de texte (facultatif).
size : la longueur de la ligne de texte. Si le texte est trop long, la ligne défilera.
maxlength : le nombre de caractères maximum contenus dans la ligne de texte
(facultatif mais conseillé).
iii. Propriétés JS
name : indique le nom du contrôle.
defaultvalue : indique la valeur par défaut affichée dans la ligne de texte.
value : indique la valeur actuellement dans la zone de texte.
iii. Propriétés JS
name : indique le nom du contrôle.
defaultvalue : indique la valeur par défaut affichée dans la ligne de texte.
value : indique la valeur actuellement dans le champ password.
I.3.2. Checkbox
Il s’agit de cases à cocher à choix multiple.
i. Syntaxe HTML
<input type=”checkbox” name=”nom” value="valeur"> texte
ii. Paramètres HTML
name : le nom du champ (servira lors de la programmation). Il doit être différent pour
chaque choix.
value : la valeur que vous voulez afficher dans le champ (facultatif).
checked : à mettre sur un (ou plusieurs) bouton, qui sera sélectionné par défaut.
Il est nécessaire de préciser le label après le contrôle (texte)
Enseignante : Mme Natija BOUZIDI 42
Support de Cours : Programmation Web 2 –TI1 ISET Sidi Bouzid
iii. Propriétés JS
name : indique le nom du contrôle.
checked : indique si la case est cochée, actuellement.
defaultchecked : indique si la case est cochée ou non par défaut.
value : indique la valeur de la case à cocher.
Il s’agit d’une liste déroulante dans laquelle on peut sélectionner une option.
i. Syntaxe HTML
<select name=”nom” size=x>
<option value="valeur"> texte
</select>
ii. Paramètres HTML
name : le nom du champ (servira lors de la programmation).
size : le nombre d’options que vous voulez afficher à l’écran. S’il n’est pas précisé, la
liste n’affiche qu’une seule ligne.
value : la valeur que vous voulez afficher dans le champ (facultatif).
selected : à mettre dans une balise <option>. Cette option sera sélectionnée par défaut.
Multiple : à mettre dans une balise <select>. Autorise la sélection de plusieurs options
dans la liste déroulante.
Chaque option de la liste déroulante correspond à une balise <option>. Il est nécessaire
de préciser le label après chaque option contrôle (texte).
iii. Propriétés JS
name : indique le nom du contrôle.
selected : indique si le bouton radio est sélectionné
defaultselected : indique si le bouton radio est coché ou non par défaut.
length : indique le nombre d‘éléments de la liste.
I.5. Bouton
iii. Propriétés JS
name : indique le nom du contrôle.
value : indique la valeur actuelle du bouton.
defaultselected : indique la valeur par défaut du bouton.
Il permet de mettre dans le script des éléments (souvent des données) qui ne seront pas
affichées par le navigateur, mais qui pourront être envoyées par mail ou à un serveur.
i. Syntaxe HTML
<input type=”hidden” name=”nom” value=”valeur”>
ii. Paramètres HTML
II.1. Fonctionnement
Les évènements sont indiqués dans la balise, d’un formulaire, le plus souvent. Ils
apparaissent comme un paramètre supplémentaire et suivent une syntaxe particulière.
Syntaxe :
<balise onEvent=”code">
balise : désigne le nom de la balise HTML qui supporte l’événement.
onEvent : désigne le gestionnaire d’événement associé à l’événement Event.
Le code inséré entre guillemets fait le plus souvent référence à une fonction définie dans
les balises <head>…</head>. Il peut cependant s’agir d’instructions directement.
Plusieurs gestionnaires d’évènements peuvent être placés dans la même balise. Certaines
balises n’appartenant pas à un formulaire peuvent supporter des gestionnaires d’évènement.
Lorsque vous cliquez sur un élément de formulaire de la page que vous consultez.
Gestionnaire d’événement :
onClick
Exemple :
<input type=”button” onClick=”alert(‘vous avez cliqué sur le bouton’) ;">
II.3. Le chargement
II.3.1. Load
Lorsque la page que vous consultez finit de se charger.
Gestionnaire d’événement :
onLoad
Exemple:
<body onLoad=”alert(‘la page est chargée !’) ;">
II.3.2. UnLoad
Lorsque vous quittez un document ou une page web.
Gestionnaire d’événement :
onUnLoad
Exemple:
<body onUnLoad=”alert(‘Vous quittez la page !’) ;">
II.3.3. Error
Lorsque le chargement d’une page ou d’un image s’interrompt en erreur.
Gestionnaire d’événement :
onError
Exemple:
<img src="pix.gif" onError=”alert(‘Erreur de chargement !’) ;">
Balises supportées : <body>, <frameset>, <img>
II.3.4. Abort
Lorsque vous interrompez le chargement d’une image.
Gestionnaire d’événement :
onAbort
Exemple :
<img src="pix.gif" onAbort=”alert(‘Vous avez interrompu le chargement de
l’image !’) ;">
Balises supportées : <img>
II.4.1. MouseOver
Lorsque vous survolez un lien ou une zone d’image activable. Une zone d’image activable est
une partie d’image qui a été transformée en lien. Je ne reviendrai pas sur ce sujet, ce n’est pas
l’objet de ce cours.
Gestionnaire d’événement :
onMouseOver
Exemple:
<a href="http://www.google.fr" onMouseOver=”alert(‘Pour aller sur
google.fr, cliquer ici’) ;">http://www.google.fr</a>
Balises supportées : <a href…>, <area href…>
II.4.2. MouseOut
Lorsque vous sortez de la zone de survol d’un lien ou d’une zone d’image activable.
Gestionnaire d’événement :
onMouseOut
Exemple:
<a href="http://www.google.fr" onMouseOut=”alert(‘Vous ne voulez pas y
aller ?’) ;">http://www.google.fr</a>
Balises supportées : <a href…>, <area href…>
II.5. Le focus
II.5.1. Focus
Lorsque vous activer un contrôle texte ou sélection.
Gestionnaire d’événement :
onFocus
Exemple:
<input type="text" value="votre nom" name=”nom” onFocus=”alert(‘Ecrivez
votre nom ici’) ;">
Balises supportées : <input type="text">, <select>, <textarea>, <input type="password">
II.5.2. Blur
Lorsque vous quitter un contrôle texte ou sélection.
Gestionnaire d’événement :
onBlur
Exemple:
Enseignante : Mme Natija BOUZIDI 47
Support de Cours : Programmation Web 2 –TI1 ISET Sidi Bouzid
Lorsque la valeur d’un texte ou d’une option change dans un formulaire. Si vous cliquez dans
la zone de texte mais que vous ne touchez pas au texte, rien ne se produit.
Gestionnaire d’événement :
onChange
Exemple:
<input type="text" value="votre nom" name=”nom” onChange=”alert(‘Vous
avez changé votre nom ??’) ;">
Balises supportées : <input type="text">, <select>, <textarea>, <input type="password">
II.7. La sélection
II.8. L’envoi
Lorsque vous cliquez sur un bouton « submit » d’un formulaire de type « post » ou « get ».
Gestionnaire d’événement :
onSubmit
Exemple:
<input type="submit" value="Envoyer" name=”envoi”
onSubmit=”alert(‘C’est parti !’) ;">
Balises supportées : <input type="submit">
II.9. Le reset
Exercice n°4 :
Soit le formulaire suivant :
Ecrire une fonction JavaScript qui cherche dans une chaîne ch la dernière occurrence
d'une sous-chaîne a et la remplace par une sous-chaîne b. (Utilisez les formulaires pour saisir
la chaine initiale et les sous-chaines et pour l’affichage du résultat utilisez la méthode Alert).
Objectifs spécifiques
Plan du chapitre
Structure du DOM
Volume horaire :
3 heures
I. Définition
Le Document Object Model (DOM), c’est-à-dire le modèle orienté objet d’une page web,
est un standard du W3C qui fournit une interface indépendante de tout langage de
programmation et de toute plate-forme, permettant à des programmes informatiques et à des
scripts d’accéder ou de mettre à jour le contenu, la structure ou le style de documents.
Le DOM s'utilise avec les documents XML (Extensible Markup Language « langage de
balisage extensible ») et HTML ('HyperText Markup Language), et permet, via le JavaScript,
d'accéder au code XML et/ou HTML d'un document. C'est grâce au DOM que nous allons
pouvoir modifier des éléments HTML (afficher ou masquer un <div> par exemple), en ajouter,
en déplacer ou même en supprimer.
<html>
<head> <body>
#text <p>
#text <a>
#text
L'élément <html> contient deux éléments, appelés enfants : <head> et <body>. Pour ces
deux enfants, <html> est l'élément parent. Chaque élément est appelé nœud (node en anglais).
L'élément <head> contient lui aussi deux enfants : <meta> et <title>. <meta> ne contient pas
d'enfant tandis que <title> en contient un, qui s’appelle #text. Comme son nom l'indique, #text
est un élément qui contient du texte.
Le schéma adopté des documents est une arborescence hiérarchisée.
Les différentes composantes d'une telle arborescence sont désignées comme étant des nœuds.
L'objet central du modèle DOM est pour cette raison l'objet node (node = noeud).
Il existe différents types de nœuds : les noeuds-élément, les noeuds-attribut, noeuds-cdata et les
noeuds-texte.
Exemple XML :
<personne sexe="masculin"> 111111
<nomprenom>Ali BEN SALAH</nomprenom >
</ personne >
L'élément personne est le noeud de départ dans ce petit extrait de structure arborescente.
Ce noeud a d'après les règles du modèle DOM, deux noeuds enfant et un noeud associé :
Les noeuds enfant sont d'une part le noeud texte avec le mot "111111", d'autre part le
noeud élément de l'élément nomprenom.
L'attribut sexe dans la balise ouvrante <personne> n'est pas par contre un noeud-enfant
mais un noeud associé.
Le noeud-attribut a toutefois lui-même un noeud enfant à savoir la valeur affectée
(masculin).
Même le noeud-élément de l'élément nomprenom a, à son tour, un noeud-enfant, à savoir le
noeud-texte de son contenu de caractères.
III.1. getElementById()
Cette méthode permet d'accéder à un élément en connaissant son ID qui est simplement
l'attribut id de l'élément.
III.2. getElementsByTagName()
Cette méthode permet de récupérer, sous la forme d'un tableau, tous les éléments de la
famille.
III.3. getElementsByName()
Ces deux méthodes prennent pour paramètre un seul argument : une chaîne de caractères.
Cette chaîne de caractères doit être un sélecteur CSS. La première, querySelector(), renvoie le
premier élément trouvé correspondant au sélecteur CSS, tandis que querySelectorAll() va
renvoyer tous les éléments (sous forme de tableau) correspondant au sélecteur CSS fourni.
Pour interagir avec les attributs, l'objet Element nous fournit deux méthodes :
getAttribute() : permet de récupérer un attribut.
setAttribute() : permet d'éditer un attribut.
Le premier paramètre est le nom de l'attribut, et le deuxième, dans le cas de setAttribute()
uniquement, est la nouvelle valeur à donner à l'attribut.
IV.2. La classe
innerHTML permet de récupérer le code HTML enfant d'un élément sous forme de texte. Ainsi,
si des balises sont présentes, innerHTML les retournera sous forme de texte : Pour éditer ou
ajouter du contenu HTML, il suffit de faire l'inverse, c'est-à-dire de définir un nouveau contenu.
IV.4. innerText
Le fonctionnement d'innerText est le même qu'innerHTML excepté le fait que seul le texte est
récupéré, et non les balises.
V. Noeuds DOM
Pour accéder aux éléments HTML, on utilise les méthodes getElementById() et
getElementsByTagName(). Une fois que l'on a atteint un élément, il est possible de se déplacer
de façon un peu plus précise, avec toute une série de méthodes et de propriétés.
Pour accéder aux éléments HTML, on utilise les méthodes getElementById() et
getElementsByTagName(). Une fois que l'on a atteint un élément, il est possible de se déplacer
de façon un peu plus précise, avec toute une série de méthodes et de propriétés.
Enseignante : Mme Natija BOUZIDI 53
Support de Cours : Programmation Web 2 –TI1 ISET Sidi Bouzid
Fonction Description
L’attribut renvoie son noeud parent. S’il n’a pas de noeud parent,
parentNode
il renvoie NULL
L’attribut renvoie un tableau de tous ses noeuds enfants. S’il n’a
childNote
pas de noeud enfant, alors il renvoie un tableau vide.
L’attribut renvoie son premier noeud enfant. S’il n’a pas de noeud
firstChild
enfant, il renvoie NULL
L’attribut renvoie son dernier noeud enfant. S’il n’a pas de noeud
lastChild
enfant, il renvoie NULL
L’attribut renvoie le noeud frere qui le suit. S’il n’a pas de noeud
nextSilbing
suivant, il renvoie NULL
L’attribut renvoie le noeud frere qui le précède. S’il n’a pas de
previousSilbing
noeud précédent, il renvoie NULL
par ailleurs,
le noeud <html> a deux childNodes : <head> et <body> ;
le noeud <head> a un childNode : le noeud <title> ;
le noeud <title> aussi n’a qu’un childNode : le noeud texte “Introduction à DOM” ;
le noeud <h1> est previousSibling de <p> et ce dernier est nextSibling de <h1> ; les
deux sont childNodes de <body> ;
l’élément <head> est le firstChild de l’élément <html> ;
l’élément <body> est le lastChild de l’élément <html> ;
l’élément <h1> est le firstChild de l’élément <body> ;
l’élément <p> est le lastChild de l’élément <body>.
Fonction Description
Cette méthode permet de créer un élément du type passé en
paramètre. Dans l’exemple ci-dessous, la ligne de code permet de
créer un élément DIV :
createElement
1 document.createElement("div")
1 nouveauDiv = document.createElement("div");
3 nouveauDiv.appendChild(text);
4 document.body.appendChild(nouveauDiv);
2 document.body.insertBefore(noeudA, noeudB);
1 noeudB = noeudA.cloneNode(true);
cloneNode
removeChild 1 elementParent.removeChild(noeud);
Exercice n°3 :
a. Type de la valeur de retour
Quels sont les paramètres et le type de valeur de retour des fonctions suivantes :
getElementById
getElementByTagName
b. Les propriétés d’un objet noeud
Quel es la valeur retournée par les propriétés suivantes
nodeName
nodeType
nodeValue
Exercice n°4 : Application avec la méthode : getElementsByTagName
a. Ecrire le code de l’exercice n°2
b. Ajouter l’évènement onload comme attribut dans la balise body
c. Affecter la fonction "afficher" pour l’attribut onload et ajouter les instructions
nécessaires.
d. Traitement d’une balise HTML: cas de "h1"
Afficher le nombre des noeuds de la balise "h1"
Donner l’instruction javascript qui permet de retourner les noeuds de la balise "h1"
Ecrire le code qui permet d’afficher le mot bonjour en utilisant les propriétés de
DOM.
Afficher le type et le nom du noeud "bonjour".
Modifier le script précédent pour le cas de plusieurs balises "h1"
e. Traitement des fils d’un noeud : cas de "h1"
Afficher la liste des types de tous les noeuds enfants du "h1".
Compléter l’affichage des noms et valeurs de tous les noeuds enfants du "h1".
Exercice n°5 : Modifier l’arborescence
a. Modifier la couleur de l’arrière plan de la balise "h1"
b. Modifier la couleur de texte de la balise " h1".
c. Afficher le contenu de la balise h1 en utilisant la propriété innerHTML.
d. Changer ce contenu en utilisant la même propriété.
Exercice n°6 : Application avec la méthode : getElementById
a. Placer deux images dans votre répertoire de travail.
b. Dans une page web, insérer une des 2 images (avec un identifiant) et 2 liens hypertextes
vides.
c. Afficher (par alert) la source de l’image insérée en utilisant la méthode getElementById
et la propriété src.
d. On veut maintenant que le clic sur le premier lien changera la source de l’image par
l’image non insérée et que le clic sur le deuxième lien changera la source pour apparaître
l’image de départ :
Ajouter les événements Onclick correspondants
Définir une fonction javascript qui changera la source de l’image selon le lien cliqué.
Objectifs spécifiques
Plan du chapitre
Signification de XML
Utilité de XML
Intérêt de XML
Volume horaire :
3 heures
I.1. Définition
Le langage XML (eXtended Markup Language) est un format général de documents orienté
texte. Il s'est imposé comme un standard incontournable de l'informatique. Il est aussi bien
utilisé pour le stockage de document que pour la transmission de données entre applications.
Il s’agit d’un langage de balisage structuré destiné pour la description, le stockage et le transfert
de données.
XML est indépendant de toute plateforme.
XML est une recommandation W3C.
De nombreuses technologies se sont développées autour de XML et enrichissent ainsi son
environnement.
Le langage XML dérive de SGML (Standard Generalized Markup Language) et de HTML
(HyperText Markup Language). Comme ces derniers, il s'agit d'un langage orienté texte et
formé de balises qui permettent d'organiser les données de manière structurée
I.2. Exemple
Les entreprises aéronautiques ont créé un langage basé sur XML pour l'échange
d'informations relatives aux données techniques des avions. De même, il existe plusieurs
langages utilisés dans les milieux financiers pour l'échange d'informations relatives aux
transactions.
Dans l'exemple suivant, on présente la composition d'une molécule :
il est destiné à décrire le contenu du document, pas son affichage (les feuilles de style
CSS et XSL gèrent l'affichage).
il est flexible, on peut définir ses balises, et les utiliser dans un ou plusieurs documents
(DTD externe)
le document ne sera affiché que s'il est bien formé et valide (s'il suit une DTD).
il est lisible pour l'humain (l'information contenue sera toujours accessible,
contrairement aux fichiers de certains logiciels, par exemple, il est impossible de
visualiser du RTF sans un logiciel qui connaisse ce format)
le document XML est un texte qui n'est pas destiné à être lu par l'humain (mais le fait
que ce soit un texte permet aux experts d'utiliser un éditeur de texte pour corriger le
fichier).
Le langage XML utilise un simple format texte sémantique, ce qui constitue un double
avantage : il est significatif et donc auto-documenté, de plus ne fais appel ‘a un format
spécifique de stockage qui risque un jour de devenir techniquement obsolète, et donc
difficilement exploitable (tel que une base de données)
Une des idées directrices de XML est la séparation entre contenu et présentation. Il faut
bien distinguer le contenu d'un document et la présentation qui en est donnée. Un même contenu
peut être rendu de façons très différentes. Cet ouvrage peut, par exemple, se présenter comme
un livre imprimé ou comme une collection de pages WEB. Le contenu est constitué, au départ,
de textes et d'illustrations mais aussi de liens entre ces éléments. L'organisation du texte en
chapitres, sections et sous-sections ainsi que les renvois entre chapitres font partie intégrante
Un des atouts d'XML est sa prise en charge native des caractères spéciaux grâce à
Unicode. De plus, il est possible d'utiliser les différents codages (UTF8, Latin1, …) possibles
puisque l'entête d'un document spécifie le codage.
Un second principe de XML est une structuration forte du document. Pour illustrer ce
principe, la même adresse est donnée ci-dessous dans un style HTML puis dans un style XML.
Style HTML :
Anas BOUDHIEF<br/>
21, rue du ISET<br/>
9100 Sidi Bouzid<br/>
<tt>anas.boudhief@gmail.com</tt>
Style XML :
<address>
<personname>
<firstname>Anas</firstname> <surname>BOUDHIEF</surname>
</personname>
<street>
<streetnumber>21</streetnumber>
<streetname>rue de ISET</streetname>
</street>
<zipcode>9100</zipcode><city>Sidi Bouzid</city>
<email> anas.boudhief@gmail.com </email>
</address>
IV.5. Format libre
Le langage XML est totalement libre car il est développé par le W3C. Chacun peut
l'utiliser sans devoir acheter une quelconque licence. Cette absence de droits favorise le
développement de logiciels libres mis à disposition de la communauté. Il existe ainsi une très
grande variété de logiciels libres autour de XML qui en couvrent les différents aspects.
Un document XML qui respecte les règles syntaxique est dit bien formé. Il est utilisable sans
DTD (La grammaire de notre document XML).
Un document XML bien formé qui respecte sa DTD est dit valide. Il est plus facile d'écrire des
feuilles de style (XSL) pour les documents valides.
ent doit contenir un et un seul élément racine
V.3. Le prologue
Forme générale :
<nom_d_élément> contenu </nom_d_élément>
Les noms sont libres (contrairement à HTML). Ils obéissent à quelques règles:
er caractère {alphabétique, «-», «_» },
-», «_», «:» }.
Le contenu d'un élément peut être :
Un document XML est un et un seul arbre d'éléments. C'est à dire : Pas de chevauchement
d'éléments. La notation suivante :
<list> ... <item> ... </list> ... </item> : est invalide.
Il faut la corriger comme suit : <list> ... <item> ... </item> ... </list>
Un document XML est composé d'un seul élément. La notation suivante :
<?xml version="1.0" encoding="iso88591"?>
<article> ... </article>
<article> ... </article>
est invalide. Il faut la corriger comme suit :
<?xml version="1.0" encoding="iso88591"?>
Enseignante : Mme Natija BOUZIDI 67
Support de Cours : Programmation Web 2 –TI1 ISET Sidi Bouzid
<stock>
<article> ... </article>
<article> ... </article>
</stock>
V.7. Les attributs
Un élément ouvrant peut être enrichi par des couples de la forme attribut1="valeur1",
comme dans l'exemple :
<produit nom="DVD" prix='200'>
La valeur doit être entourée d'apostrophes si elle contient des guillemets, et inversement.
Le nom des attributs suit les mêmes règles syntaxiques que les noms d'éléments.
<produit>
<nom>DVD</nom>
<prix>150</prix>
</produit>
L'attribut doit changer l'interprétation des données:
<prix monnaie="Dinars"> 150 </prix>
Les attributs réservés
xml:lang='langue' permet de définir la langue utilisée dans l'élément et tous les sous
éléments. La langue suit la norme ISO 3166 définie par la RFC 1766 (Request For
Comment). Par exemple fr ou en-US ou fr-FR.
xml:space='preserve' ou xml:space='default' permet de définir l'interprétation des
espaces dans l'élément et tous les sous-éléments.
xml:id='identificateur' permet d'associer une et une seule clef à un élément .
xml:idref='identificateur' permet de faire référence à une clef.
V.8. Les références d'entités
Il existe des entités prédéfinies :
& donne &
< donne <
> donne >
" donne ’’
' donne ‘
&#nnn; donne le caractère de code décimal nnn,
&#xnnn; donne le caractère de code héxadécimal nnn,
Objectifs spécifiques
Plan du chapitre
Utilisation du DTD
Volume horaire :
3 heures
Introduction
Il peut être parfois nécessaire de préciser les balises et les attributs auxquels on a droit
lors de la rédaction d'un document XML, par exemple si l'on veut pouvoir partager le même
type de document avec une communauté d'autres rédacteurs.
Deux solutions sont possibles : les "Schémas XML" et les "DTD : Document Type Definition".
Ces dernières sont les plus simples à manipuler et sont apparues en premier, alors que les
Schémas n'étaient pas encore définis. Il ne faut pas oublier néanmoins qu'il existe une autre
solution, plus complexe certes, mais aussi plus puissante.
Elle permet notamment d'informer plus efficacement l'utilisateur sur les balises auxquelles il a
droit, ou bien de spécifier de manière plus détaillée le formatage autorisé pour le contenu de la
balise ou de l'attribut.
Une DTD peut être stockée dans deux endroits différents. Elle peut être incorporée au
document XML (elle est alors dite interne), ou bien être un fichier à part (on parle alors de DTD
externe). Cette dernière possibilité permet de la partager entre plusieurs documents XML. Il est
possible de mêler DTD interne et externe (DTD mixte).
ll existe de surcroît deux types de DTD externes : privé ou public. Les DTD publiques sont
normalisées et accessibles sur Internet, tandis que les DTD privées sont disponibles uniquement
sur le système utilisé pour valider le document XML.
Syntaxe d’une DTD externe :
<!DOCTYPE Élément-racine Type [identifiant] Emplacement>
Syntaxe d’une DTD interne :
<!DOCTYPE Élément-racine
[
Les Déclarations Internes
]
>
Syntaxe D’une DTD Mixte :
<!DOCTYPE Élément-racine Type Emplacement
[
Les Déclarations Internes
]>
identifiant : identifiant normalisé de la DTD (à définir uniquement avec les DTD PUBIC);
Les règles d’une DTD portent principalement sur les éléments et les attributs. Elles
permettent de définir si un élément a, par exemple, le droit de contenir d’autres éléments ou
bien de ne contenir que des données textuelles. Une règle s’écrit dans une DTD de la façon
suivante:
<!mot-clé Paramétre1 Paramétre2 … >
Le nombre de caractères d’espacement entre les paramètres est sans effet. Il est donc également
possible d’écrire une règle comme suit :
<!mot-clé
Paramétre1
Paramétre2 …
>
Les mots clés possibles sont :
ELEMENT : relatif à un élément XML (balise XML) ;
vide: EMPTY,
séquence ou choix d'élément: dans ces cas, on indique la liste des éléments-enfants
entourée par des parenthèses.
Cet élément est le plus répandu, puisque c'est celui qui contient du texte. Il se déclare ainsi:
<!ELEMENT Elt (#PCDATA)>
Un élément vide est, comme son nom l'indique, un élément qui n'a aucun contenu que ce soit
de type texte, ou bien un autre élément. Le mot-clef utilisé pour la déclaration de ce type
d'élément est :
EMPTY : <!ELEMENT Elt EMPTY>
Exemple d'utilisation :<elt />
Enseignante : Mme Natija BOUZIDI 73
Support de Cours : Programmation Web 2 –TI1 ISET Sidi Bouzid
Un élément vide peut fort bien posséder un ou plusieurs attributs. Par exemple :
Une séquence d'éléments est une liste ordonnée des éléments qui doivent apparaître en
tant qu'éléments-enfants de l'élément que l'on est en train de définir. Ce dernier ne pourra
contenir aucun autre élément que ceux figurant dans la séquence. Cette liste est composée
d'éléments séparés par des virgules et est placée entre parenthèses.
Chaque élément-enfant doit de plus être déclaré par ailleurs dans la DTD (avant ou après la
définition de la liste, peu importe). Dans le fichier XML, ils doivent apparaître dans l'ordre de
la séquence.
Une liste ordonnée dont les éléments sont uniques et obligatoires
<!ELEMENT Elt0 (elt1, Elt2, Elt3)>
Exemple d'utilisation valide : <elt0> <elt1>(...)</elt1> <elt2>(...)</elt2> <elt3>(...)</elt3></elt0>
Exemple d'utilisation non valide : <elt0> <elt1>(...)</elt1> <elt3>(...)</elt3></elt0>
Un choix d'élément donne le choix dans une liste de plusieurs éléments possibles. De
même que pour la séquence, les éléments-enfants doivent être déclarés dans la DTD. Cette liste
est composée d'éléments séparés par le caractère |.
Exemple d'utilisation valide : <elt0> <elt1>(...)</elt1> </elt0>
Exemple d'utilisation valide : <elt0> <elt2>(...)</elt2> </elt0>
Exemple d'utilisation non valide : <elt0> <elt2>(...)</elt2> <elt3>(...)</elt3></elt0>
Remarque :
Il est possible de combiner les listes ordonnées et les listes de choix.
Exemple :
<!ELEMENT personne ( (M|Mme|Mlle) , nom, prenom)>
Cette règle précise que le noeud personne doit contenir un premier noeud enfant qui pourra être
au choix soit M, soit Mme, soit Mlle. Les deuxième et troisième éléments enfanst seront
respectivement nom et prenom.
L'élément quelconque contenir tout autre élément défini dans la DTD, aussi bien qu'être
vide ou contenir du texte.
Les éléments-enfants éventuels peuvent apparaître dans n'importe quel ordre, et en quantité non
définie. Il est préférable de ne pas utiliser trop souvent ce type de déclaration, car on perd les
avantages qu'offre la rédaction d'une DTD, qui sont de fixer des contraintes précises sur la
structure du document XML qui lui est lié. Le mot-clef utilisé pour la déclaration de ce type
d'élément est ANY : <!ELEMENT Elt ANY>
Un élément à contenu mixte peut contenir aussi bien du texte, que des éléments-enfants.
Il se présente comme une liste de choix, avec des indicateurs d'occurrence bien choisis. Le texte
contenu peut se trouver à n'importe quel endroit dans l'élément, et peut être une section
CDATA.
Exemple de déclaration: <!ELEMENT citation(#PCDATA | auteur)*>
Exemple d'utilisation :
Il s'agit là du type d'attribut le plus courant. Une chaîne de caractères peut être composée
de caractères ainsi que d'entités analysables. Le mot-clef utilisé pour la déclaration de chaîne
de caractère est CDATA.
Exemple de déclaration de CDATA :
<! ELEMENT elt(...)><! ATTLIST elt attr CDATA #IMPLIED>
Enseignante : Mme Natija BOUZIDI 77
Support de Cours : Programmation Web 2 –TI1 ISET Sidi Bouzid
Exemples d'utilisations :
<elt attr="Chaîne de caractères"></elt>
<!ENTITY car "caractères"><elt attr="Chaîne de &car;">(...)</elt>
On peut parfois désirer limiter la liste de valeurs possibles pour un attribut. On le définit
alors comme étant de type énuméré. Donner une autre valeur dans le fichier XML provoque
une erreur. Les valeurs énumérées se définissent comme une liste entre parenthèses dont les
valeurs sont séparées des autres par le caractère «|» (barre verticale)
Exemple de déclaration d'une liste de choix d'attributs :
<!ELEMENT img EMPTY>
<!ATTLIST img format (BMP | GIF | JPEG) "JPEG">
Cet exemple déclare un attribut format d'un élément img. La valeur de cet attribut peut être
BMP, GIF ou JPEG. Si aucune valeur n'est affectée à cet attribut, c'est la valeur par défaut qui
le sera affectée, ici JPEG. On notera l'absence de guillemets dans la liste des valeurs possibles.
C'est une source courante d'erreur dans la rédaction d'une DTD.
<!ATTLIST personne civilite (Mme | Melle | M) #REQUIRED >
Ce type sert à indiquer que l'attribut en question peut servir d'identifiant dans le fichier
XML. Deux éléments ne pourront pas posséder le même attribut possédant la même valeur.
Exemple de déclaration de type ID optionnel :
<?xml version="1.0" encoding=« UTF8"?>
<!DOCTYPE document SYSTEM "exemple1.dtd" ><document>
<personne IDpersonne="id_1">
<nom>Salah</nom><prenom>Mohamed</prenom></personne>
<personne IDpersonne="id_2">
<nom>Said</nom>
<prenom>Anas</prenom></personne>
<livre auteur="id_1">Mes nouvelles</livre>
</document>
Le fichier DTD correspondant est :
<?xml version="1.0" encoding="ISO88591"?>
<!ELEMENT document (personne*,livre*)>
<!ELEMENT personne (nom, prenom)>
Enseignante : Mme Natija BOUZIDI 78
Support de Cours : Programmation Web 2 –TI1 ISET Sidi Bouzid
Bibliographies
1) Chedly FEHRI « Cours Technologies XML », Ecole Nationale des Ingénieurs de Sfax,
2005/2006.
2) Alexandre Brillant «XML cours et exercices» Maison d’édition : Eyrolles 2007 ISBN : 978-
2-212-12151-3
3) http://xml.chez.com/initiation/
4) http://perso.livehost.fr/pdf/appweb/Cours3_XML.pdf
5) https://fr.wikipedia.org/wiki/Extensible_Markup_Language
6) http://www.grappa.univ-ille3.fr/~torre/Enseignement/tp/XML/
7) http://deptinfo.unice.fr/twiki/pub/Minfo03/ServletEtXml/00-xml-presentation.pdf