Partie 1 - Tarek ZLITNI Offcial Web Site

Transcription

Partie 1 - Tarek ZLITNI Offcial Web Site
Développement
Web II
Tarek ZLITNI
www.ZLITNI.com
[email protected]
Plan du cours
• Introduction
•
Le WWW, HTTP et HTML
• Architecture Client / Serveur
• Partie 1 :HTML 5 & JavaScript
• AJAX (JQUERY)
• Les Servlets
©Tarek ZLITNI - ISIMS
Développement Web II
2
1
Introduction
•
Ces dernières années, le Web est devenu une source
d’information incontournable.
•
Le Web correspond à la réalisation d’un ensemble de services :
•
Consulter et échanger des données sous forme de textes
ou d’images,
•
•
•
Acheter un produit ou un service en ligne(e-commerce).
Communiquer vi les réseaux sociaux
Services multimédia en ligne (TV-Replay, streaming en
ligne, Internet TV, web radio,…)
©Tarek ZLITNI - ISIMS
Développement Web II
3
Architecture Client/Serveur
•
Les applications développées pour les sites Internet reposent sur le
modèle Client/Serveur.
•
Le modèle Client/Serveur a été conçu avant Internet dans le but
d’améliorer la gestion des données :
•
Une application Client réside sur une machine locale et accède
aux données d’un ensemble de données tel qu’un (SGBD).
•
Lorsque les utilisateurs veulent accéder aux données, ces
applications n’évoluent pas suffisamment pour suivre la
demande. Comme la logique se trouve sur le Client, il doit être
installé sur chaque machine Client.
è La gestion devient donc de plus en plus difficile.
©Tarek ZLITNI - ISIMS
Développement Web II
4
2
Architecture Client/Serveur
•
Les termes « Clients » et « Serveur » ne sont pas anodins.
•
Le fonctionnement (concept) Client/Serveur est similaire au
rapport existant entre les clients et le serveur d’un
restaurant.
©Tarek ZLITNI - ISIMS
Développement Web II
5
Architecture Client/Serveur
•
Le fonctionnement (concept) Client/Serveur est similaire au
rapport existant entre les clients et le serveur d’un restaurant.
Le Serveur répond au Client 1 en
apportant
la
commande
(Réponse)
Les Client 2 et 3 passent une
commande au serveur (Requête).
©Tarek ZLITNI - ISIMS
Développement Web II
6
3
Architecture Client/Serveur
•
Transposé dans le monde informatique :
•
Le Client est une application qui s’exécute sur un ordinateur
personnel.
•
Le Serveur est une autre application :
•
•
•
gère des ressources partagées ( Les plats, les tables ),
s’exécute le plus souvent, sur un ordinateur distant (établit
une relation entre les Clients et les ressources disponibles).
Lorsque nous accédons à un site Internet, nous utilisons la
technologie Client-Serveur.
©Tarek ZLITNI - ISIMS
Développement Web II
7
Architecture Client/Serveur
•
L’accès à un site Internet nécessite les éléments suivants :
•
Une application cliente (navigateur Web : Mozilla Firefox,
Google Chrome, Internet Explorer) auquel nous fournissons
l’adresse du site recherché du type http://www.unsite.net.
•
Une application serveur (serveur Web : AppacheHTTP
Server, IIS-Internet Information Server,Tomcat),
•
Un protocole HTTP.
©Tarek ZLITNI - ISIMS
Développement Web II
8
4
Architecture Client/Serveur
•
L’application Cliente envoie une requête au serveur Web
désigné par l’URL (Uniform Resource Locator) .
Requête :
affichez-moi le
site :
www.unsite.com
Client
Serveur
En tapant l’URL www.unsite.net, l’internaute émet
une requête au serveur Web via le navigateur
©Tarek ZLITNI - ISIMS
Développement Web II
9
Architecture Client/Serveur
•
Le serveur Web Contacté répond au client en affichant l’ensemble
des informations stockées et organisées sur son disque dur à
l’URL donnée.
Client
Réponse:
affichage:
www.unsite.com
Serveur
©Tarek ZLITNI - ISIMS
Développement Web II
10
5
Architecture Client/Serveur
A retenir :
•
Un Client est une application (navigateur) qui
se connecte à un autre ordinateur pour obtenir
ou modifier des informations à l’aide de
requêtes.
•
Un Serveur est une application située sur un
ordinateur très puissant, capable de gérer un
grand nombre de requêtes simultanément.
•
Un Serveur est toujours en attente de requête.
©Tarek ZLITNI - ISIMS
Développement Web II
11
Le WWW
•
Le WWW (World Wide Web) est un ensemble mondial de
documents hypertextes et hypermédias placés dans des
fichiers au format spécifique appelés pages HTML
•
Une page Web est un fichier de données(fichier contenant du
code HTML) situé sur un ordinateur distant
•
Utilisation du protocole Internet HTTP pour télécharger la
page
•
•
Utilisation d’un navigateur pour l’afficher
Accès à une page Web : adresse
©Tarek ZLITNI - ISIMS
Développement Web II
12
6
Partie 1 : HTML5
& Javascript
HTML 4.01 / XHTML 1.0
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd ">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="design.css" />
<script type=”text/javascript” src=script.js"></script>
</head>
<body>
</body>
©Tarek ZLITNI - ISIMS
Développement Web II
14
7
Html 5
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8" />
<link href="design.css" rel="stylesheet" />
<script src="script.js"></script>
</head>
©Tarek ZLITNI - ISIMS
Développement Web II
15
Les nouvelles balises
• Les nouveautés de HTML 5:
•
•
•
Balises sémantiques
Balises multimlédia
Balises de formulaires 2.0
©Tarek ZLITNI - ISIMS
Développement Web II
16
8
Balises sémantiques
HTML 4.01 / XHTML 1.0
<div id="header">
<p>Un premier paragraphe</p>
<h1>Mon super site</h1>
<p>Un deuxième paragraphe</p>
</div>
</div>
<div id="article">
<div id="conclusion">
<h2>Mon super article<h2>
<p>Un premier paragraphe</p>
<div id="intro">
</div>
<p>Un premier paragraphe</p>
<div id="author">Ecrit par moimême</div>
</div>
<div id="content">
©Tarek ZLITNI - ISIMS
</div>
Développement Web II
17
Balises sémantiques
HTML 5
<header>
<p>Un premier paragraphe</p>
<h1>Mon super site</h1>
<p>Un deuxième paragraphe</p>
<header>
</section>
<article>
<section>
<h1>Mon super article<h1>
<p>Un premier paragraphe</p>
<section>
</section>
<p>Un premier paragraphe</p>
<footer> Ecrit par moimême</footer>
</section>
</article>
<section>
©Tarek ZLITNI - ISIMS
Développement Web II
18
9
Balises multimédia
• Insertion des séquences sonores et vidéo:
•
Avant le HTML5, il n’est pas un standard pour lire les fichiers
audio et vidéos dans les pages web.
•
Ces fichiers sont lus uniquement avec un plug-in (flash par
exemple).
•
La balise <audio> spécifie une méthode standard pour insérer de
l’audio dans la page web.
<audio controls>
<source src="horse.ogg" type="audio/ogg">
<source src="horse.mp3" type="audio/mpeg">
Votre navigateur ne support pas l’element audio.
</audio>
©Tarek ZLITNI - ISIMS
Développement Web II
19
HTML5 : La vidéo
• La balise <video> spécifie une méthode standard pour insérer de
la vidéo dans la page web.
©Tarek ZLITNI - ISIMS
Développement Web II
20
10
HTML5 : La vidéo
<video width="320" height="240" autoplay>
<source src="movie.mp4" type="video/mp4">
<source src="movie.ogg" type="video/ogg">
Votre navigateur ne supporte pas la balise video.
</video>
è Plusieurs balises <source> : plusieurs versions de la
vidéo encodée avec différents codecs. Le navigateur
choisit automatiquement le premier format qu'il peut lire
©Tarek ZLITNI - ISIMS
Développement Web II
21
HTML5 : La vidéo
•
Les attributs :
•
preload="auto"
permet de de spécifier au navigateur de débuter le
téléchargement de la vidéo tout de suite, en anticipant sur le fait
que l'utilisateur lira la vidéo.
•
autoplay="true"
comme son nom l'indique, permet de lancer la lecture
automatiquement.
•
poster="img.jpg"
permet d'indiquer une image à afficher par défaut dans l'espace
réservé par la vidéo, avant la lecture.
•
loop
indique que la lecture doit s'effectuer en boucle.
©Tarek ZLITNI - ISIMS
Développement Web II
22
11
HTML5 : La vidéo
• Les attributs:
•
videoHeight / videoWidth
retourne un entier contentant l’hauteur /largeur de la
ressource en pixels CSS, en tenant compte de: les dimensions,
aspect ratio, résolution, etc., comme définit pour le format utilisé
par la ressource.
•
•
Si la propriété readystate de l’élément est HAVE_NOTHING, la valeur
=0.
height /width
une propriété de type DOMString qui reflète l’ attribute
HTML l’hauteur /largeur, qui spécifie l’hauteur /largeur de l
a zone d’affichage, en pixels CSS.
©Tarek ZLITNI - ISIMS
Développement Web II
23
Les formulaires 2.0
• Avec
Html 4, les types de champs n'étaient pas
nombreux.
• HTML5 apporte plus d'une douzaine de nouveaux types.
• HTML5 introduit de nombreuses nouveautés pour les
formulaires pour améliorer l'aide à la saisie et les
contrôles disponibles pour l'utilisateur.
• Plusieurs attributs simples à mettre en place améliorent
la prise en charge des formulaires, tout en se passant de
JavaScript.
©Tarek ZLITNI - ISIMS
Développement Web II
24
12
Les formulaires 2.0
• <input type=
•
•
•
•
•
•
•
•
•
search
tel
email
url
date
number
range
color
...etc
©Tarek ZLITNI - ISIMS
Développement Web II
25
Les formulaires 2.0
Champs
Syntaxe
Date
<input type="date" name="d" value=“<?php echo $today?>">
Date et temps
<input type="datetime" name="dt" value="<?php echo $now?>">
Time
<time>2013-06-27</time>
Nombre
<input type="number" name="nombre" value="12345">
©Tarek ZLITNI - ISIMS
Développement Web II
26
13
Les formulaires 2.0
Champs
Syntaxe
Month
<input type="month" name="holidays">
Week
<input type="week" name="int_week">
datetime-local
<input type="datetime-local" name="bdaytime">
Note: type="datetime-local" n’est pas supporté par Firefox et
Internet Explorer.
email
<input type="email" name="email">
©Tarek ZLITNI - ISIMS
Développement Web II
27
Les formulaires 2.0
Champs
Syntaxe
Couleur
<input type="color" name="couleur" value="">
Champ de recherche <input type="search" name="" list="datalist" value="">
Data
<data value="10">Dix</data>
©Tarek ZLITNI - ISIMS
Développement Web II
28
14
Les formulaires 2.0
Champs
Syntaxe
Range
<input type="range" min="-100" max="100" value="0" step="2"
name="power" list="powers">
<datalist id="powers">
<option value="0">
<option value="-30">
<option value="30">
<option value="+50">
</datalist>
Progress
<progress id="prog" max=100>
©Tarek ZLITNI - ISIMS
Développement Web II
29
Eléments supprimés
• Les éléments suivants de Html 4 ont été retirés de Html 5
•
•
•
•
•
•
•
•
<acronym>
<applet>
<basefont>
<big>
•
•
•
•
<frameset>
<noframes>
<strike>
<tt>
<center>
<dir>
<font>
<frame>
©Tarek ZLITNI - ISIMS
Développement Web II
30
15
Javascript
JavaScript
Principe
•
•
•
•
•
•
•
•
•
Langage de script objet
Syntaxe style C / C++ / Java
Sensible à la casse
N’est PAS du Java
Exécuté par le client Web
Peut être désactivé sur le client
Nombreux objets pour la manipulation HTML
Gestion des événements HTML
Rendre les pages interactives (HTML+CSS+JS)
©Tarek ZLITNI - ISIMS
Développement Web II
32
16
Introduction
HTML et JavaScript
• la page HTML devra TOUJOURS contenir les deux balises
spécifiques et indispensables:
<SCRIPT language="JavaScript">
contenu du script </SCRIPT>
OU bien :
<SCRIPT type="text/JavaScript">
contenu du script </SCRIPT>
©Tarek ZLITNI - ISIMS
Développement Web II
33
Introduction
Utilisation et emplacement
• <SCRIPT>…</SCRIPT> : autant de fois que nécessaire et
n'importe où dans le document HTML.
• On traite la page HTML de haut en bas.
• De façon générale, les fonctions sont placées dans la
section entête (<HEAD> …</HEAD>) du document.
•
Ainsi on interprète les scripts, si nécessaire avant que le reste du
document ne soit téléchargé.
©Tarek ZLITNI - ISIMS
Développement Web II
34
17
Introduction
Utilisation et emplacement
• Utilisation de l'attribut «SRC» pour faire référence à l'URL,
i.e. le fichier qui contient le script.
<SCRIPT language="JavaScript" SRC="fichier.js">
</SCRIPT>
• NB.
•
js est l’extension du fichier javascript
.
©Tarek ZLITNI - ISIMS
Développement Web II
35
Syntaxe
•
La casse est importante: les majuscules et minuscules ne
doivent jamais être interchangées entre elles.
BON : alert();
MAUVAIS: Alert();
•
Le caractère point-virgule est utilisé comme séparateur de fin de
ligne mais sa présence n'est pas obligatoire si la ligne ne
comporte qu'une seule instruction.
•
Les commentaires simples(sur une ligne) sont indiqués par une
double barre oblique (//).
•
Les commentaires qui s'étendent sur plusieurs lignes utilisent /*
et */
©Tarek ZLITNI - ISIMS
Développement Web II
36
18
Exemple
<html>
<head>
<title>Ma première page Web</title>
</head>
<body>
<script type="text/javascript" language="JavaScript">
<!-document.writeln("Salut !") ;
// -->
</script>
</body>
</html>
©Tarek ZLITNI - ISIMS
Développement Web II
37
Variables
• Déclaration de variables facultative
• Variables non typées à la déclaration
var nom_variable ;
• Typage dynamique à l’affectation
• Types gérés:
•
•
•
•
•
Nombres (10, 3.14)
Booléens (true, false)
Chaînes ("Salut !", 'Salut !' )
null
undefined
©Tarek ZLITNI - ISIMS
Développement Web II
38
19
Structures conditionnelles
Exemple
<script language="JavaScript">
{
var code;
instructions ; code= window.prompt("Entrez le code de 3 chiffres
du produit","");
}
if (code.length == 3)
{
[ else
document.write ("Le code est bon!");
{
}
instructions ; else
{
} ]
document.write("SVP, recommencez car le code \""
+code+ "\" n'est pas valide.");
}
</script>
if (condition)
©Tarek ZLITNI - ISIMS
Développement Web II
39
Structures conditionnelles
Exemple
switch (expression) <script language="JavaScript">
var choix;
{
case étiquette :
instructions ;
break ;
case étiquette :
instructions ;
break ;
default :
instructions ;
}
choix=window.prompt( "Choisissez un code de produit:\n"
+"1 (oranges), 2 (pommes)", "");
switch (choix) {
case "1" :
document.write("Les oranges sont à 1,900 dinars le
kilo.<BR>");
break;
case "2" :
document.write("Les pommes sont à 4,500 dinars le
panier.<BR>");
break;
default :
document.write("Vous avez tapé un mauvais code<BR>");
}
document.write("Avez vous besoin d'autres choses
aujourd\'hui?<BR>");
</script>
©Tarek ZLITNI - ISIMS
Développement Web II
40
20
Structures itératives
while (condition)
{
instructions ;
}
do
{
instructions ;
}
while (condition) ;
Exemple
<script language="JavaScript">
var choix;
choix=window.prompt( "Choisissez un code de produit:\n"
+"1 (oranges), 2 (pommes)", "");
switch (choix) {
case "1" :
document.write("Les oranges sont à 1,900 dinars le
kilo.<BR>");
break;
case "2" :
document.write("Les pommes sont à 4,500 dinars le
panier.<BR>");
break;
default :
document.write("Vous avez tapé un mauvais code<BR>");
}
document.write("Avez vous besoin d'autres choses
aujourd\'hui?<BR>");
</script>
©Tarek ZLITNI - ISIMS
Développement Web II
41
Fonctions
•
•
Valeur de retour non typée
Arguments non typés
// Déclaration
function ma_fonction(arguments)
{
instructions ;
return quelque_chose; // ou pas…
}
ma_fonction(12) ; // Appel
©Tarek ZLITNI - ISIMS
Développement Web II
42
21
Entrée et sortie de données avec
JavaScript
• 3 types de boites de messages
• Méthode alert()
•
sert à afficher à l’utilisateur des informations simples de type texte.
Une fois que ce dernier a lu le message, il doit cliquer sur OK pour
faire disparaître la boîte
• Méthode confirm()
•
permet à l’utilisateur de choisir entre les boutons OK et Annuler.
• Méthode prompt()
•
La méthode prompt() permet à l’utilisateur de taper son propre
message en réponse à la question posée
• La méthode document.write permet d ’écrire du code
HTML dans la page WEB
©Tarek ZLITNI - ISIMS
Développement Web II
43
Les Objets
•
•
•
•
Les objets de JavaScript, sont soit des entités pré définies du
langage, soit créés par le programmeur.
• Par exemple, le navigateur est un objet qui s'appelle "navigator".
• La fenêtre du navigateur se nomme "window"
• La page HTML est un autre objet, que l'on appelle "document".
• Un formulaire à l'intérieur d'un "document", est aussi un objet.
• Un lien hypertexte dans une page HTML, est encore un autre objet. Il s'appelle "link". etc...
Les objets javascript peuvent réagir à des "Evénements".
Tous les navigateurs ne supportent pas les mêmes objets
Accès aux propriétés d’un objet
• voiture.couleur.value
• voiture.couleur.value = verte
©Tarek ZLITNI - ISIMS
Développement Web II
44
22
Les objets
• L’opérateur New
• L'opérateur
new est utilisé pour créer une nouvelle
instance ou un nouveau type d'objet défini par
l'utilisateur ou de l'un des types d'objets prédéfinis,
Array, Boolean, Date, Function, Image, Number, Object,
ou String.
• nouvel_objet = new type_objet(parametres)
texte = new String("Une chaîne de caractère");
©Tarek ZLITNI - ISIMS
Développement Web II
45
Les objets
• L’opérateur Typeof
•
L'opérateur typeof renvoie une chaîne de caractères indiquant
quel est le type de l'opérande.
var i = 1;
typeof i; //retourne number
var titre="Les raisins de la colère";
typeof titre; //retourne string
var jour = new Date();
typeof jour; //retourne object
var choix = true;
typeof choix; //retourne boolean
var cas = null;
typeof cas; //retourne object
typeof parseFloat; //retourne function
typeof Math; //retourne object (IE 5.*, NS 6.*, NS 4.78, Opera 6.*,
Opera 5.*
typeof Math; //retourne function NS 3.*, Opera 3.*
©Tarek ZLITNI - ISIMS
Développement Web II
46
23
L'objet String
•
Propriété :
•
•
length : retourne la longueur de la chaîne de caractères;
Méthodes :
•
•
•
•
•
•
•
•
anchor( ) : formate la chaîne avec la balise <A> nommée;
b( ) : formate la chaîne avec la balise <B>;
big( ) : formate la chaîne avec la balise <BIG>;
charAt( ) : renvoie le caractère se trouvant à une certaine position;
charCodeAt( ) : renvoie le code du caractère se trouvant à une
certaine position;
concat( ) : permet de concaténer 2 chaînes de caractères;
fromCharCode( ) : renvoie le caractère associé au code;
indexOf( ) : permet de trouver l'indice d'occurrence d'un caractère
dans une chaîne;
©Tarek ZLITNI - ISIMS
Développement Web II
47
L'objet String
•
•
italics( ) : formate la chaîne avec la balise <I>;
•
link( ) : formate la chaîne avec la balise <A> pour permettre de
faire un lien;
•
•
•
•
•
slice( ) : retourne une portion de la chaîne;
lastIndexOf( ) : permet de trouver le dernier indice d'occurrence
d'un caractère;
substr( ) : retourne une portion de la chaîne;
substring( ) : retourne une portion de la chaîne;
toLowerCase( ) : permet de passer toute la chaîne en minuscule;
toUpperCase( ) : permet de passer toute la chaîne en majuscules;
©Tarek ZLITNI - ISIMS
Développement Web II
48
24
Chaînes : Exemples
var s = "Bon anniversaire Benjamin" ;
document.write(s.charAt(2)) ;
è n
document.write(s.charCodeAt(2)) ;
è 110
document.write(s.concat(" du groupe C12")) ;
è Bon anniversaire Benjamin du groupe C12
document.write(String.fromCharCode( 49, 50)) ;
è 12
document.write(s.indexOf("Benjamin")) ;
è 17
document.write(s.lastIndexOf("a")) ;
è 21
document.write(s.match(/Benjamin$/)) ;
è Benjamin
(null si non trouvé)
©Tarek ZLITNI - ISIMS
Développement Web II
49
Chaînes : Exemples
document.write(s.slice( 17)) ;
è Benjamin
document.write(s.split( " ")) ;
è Bon,anniversaire,Benjamin
document.write(s.substr( 4, 12)) ;
è anniversaire
document.write(s.substring( 4, 16)) ;
è anniversaire
document.write(s.toUpperCase()+s.toLowerCase()) ;
è BON ANNIVERSAIRE BENJAMINbon anniversaire benjamin
©Tarek ZLITNI - ISIMS
Développement Web II
50
50
25
L'objet Array
•
Propriété :
•
•
length : retourne le nombre d'éléments du tableau;
Méthodes :
•
•
•
•
•
concat( ) : permet de concaténer 2 tableaux;
join( ) : converti un tableau en chaîne de caractères;
reverse( ) : inverse le classement des éléménts du tableau;
slice( ) : retourne une section du tableau;
sort( ) : permet le classement des éléments du tableau;
©Tarek ZLITNI - ISIMS
Développement Web II
51
L'objet Array
•
•
Objet Array
Déclaration
var tab1 = new Array(taille) ;
var tab2 = new Array(1, "a", 9, …) ;
index è 0
1
2 …
•
Utilisation
window.alert(tab2[0]) ; // 1
tab2[2] = 6 // 6 remplace 9
•
Accroissement automatique de la taille
var tab1 = new Array(2) ;
tab1[200] = 5 ;
©Tarek ZLITNI - ISIMS
Développement Web II
52
26
L'objet Array
•
Parcours
var tab2 = new Array(1, "a", 9) ;
tab2[200] = 12 ;
for (i in tab2)
window.alert("tab2[" + i + "] = "
+ tab2[i]) ;
// tab2[0] = 1
// tab2[1] = a
// tab2[2] = 9
// tab2[200] = 12
©Tarek ZLITNI - ISIMS
Développement Web II
53
L'objet Math
• Propriétés :
•
•
•
•
•
•
•
•
E : renvoie la valeur de la constante d'Euler (~2.718);
LN2 : renvoie le logarithme népérien de 2 (~0.693);
LN10 : renvoie le logarithme népérien de 10 (~2.302);
LOG2E : renvoie le logarithme en base 2 de e (~1.442);
LOG10E : renvoie le logarithme en base 10 de e (~0.434);
PI : renvoie la valeur du nombre pi (~3.14159);
SQRT1_2 : renvoie 1 sur racine carrée de 2 (~0.707);
SQRT2 : renvoie la racine carrée de 2 (~1.414);
©Tarek ZLITNI - ISIMS
Développement Web II
54
27
L'objet Math
•
Méthodes :
•
abs( ), exp( ), log(), sin( ), cos( ), tan( ), asin( ), acos( ), atan( ),
max( ), min( ), sqrt( ) sont les opérations mathématiques
habituelles;
•
atan2( ) : retourne la valeur radian de l'angle entre l'axe des
abscisses et un point;
•
•
•
ceil( ) : retourne le plus petit entier supérieur à un nombre;
•
•
random( ) : retourne un nombre aléatoire entre 0 et 1;
floor( ) : retourne le plus grand entier inférieur à un nombre;
pow( ) : retourne le résultat d'un nombre mis à une certaine
puissance;
round( ) : arrondi un nombre à l'entier le plus proche.
©Tarek ZLITNI - ISIMS
Développement Web II
55
Objet Math : Exemples
document.write(115.04+15) ;
è 130.04000000000002
document.write(Math.PI) ;
è 3.141592653589793
document.write(Math.abs( -12.34)) ;
è 12.34
document.write(Math.floor( 12.54)) ;
è 12
document.write(Math.round( 12.54)) ;
è 13
document.write(Math.ceil( 12.54)) ;
è 13
document.write(Math.random()) ;
è 0.394555831655689
©Tarek ZLITNI - ISIMS
Développement Web II
56
28
L'objet Date
•
•
Propriété : aucune;
Méthodes :
•
getFullYear( ), getYear( ), getMonth( ), getDay( ), getDate(),
getHours( ), getMinutes( ), getSeconds( ), getMilliseconds( ):
retournent respectivement l'année complète, l'année
(2chiffres), le mois, le jour de la semaine, le jour du mois,
l'heure, les minutes, les secondes et les millisecondes stockés
dans l'objet Date;
•
getUTCFullYear( ), getUTCYear( ), … retournent respectivement
l'année complète, l'année (2chiffres), … stockés dans l'objet
Date en temps universel;
•
setFullYear( ), setYear( ), … remplacent respectivement l'année
complète, l'année (2chiffres), … dans l'objet Date;
©Tarek ZLITNI - ISIMS
Développement Web II
57
L'objet Date
•
setUTCFullYear( ), setUTCYear( ), … remplacent l'année
complète, l'année (2chiffres), … dans l'objet Date en temps
universel;
•
•
getTime( ) : retourne le temps stocké dans l'objet Date;
•
toGMTString( ), toLocaleString( ), toUTCString( ) : convertissent la
date en chaîne de caractère selon la convention GMT, selon la
convention locale ou en temps universel;
getTimezoneOffset( ) : retourne la différence entre l'heure du
client et le temps universel;
©Tarek ZLITNI - ISIMS
Développement Web II
58
29
Dates : Exemples
var today = new Date()
document.write(today) ; Tue Nov 02 2010 00:11:36 GMT+0100
var birthday = new Date("December 17, 1995
03:24:00")
document.write(birthday) ; Sun Dec 17 1995 03:24:00 GMT+0100
birthday = new Date(95,11,17)
document.write(birthday) ; Sun Dec 17 1995 00:00:00 GMT+0100
birthday = new Date(95,11,17,3,24,0)
document.write(birthday) ; Sun Dec 17 1995 03:24:00 GMT+0100
document.write(birthday.getDay()) ; 0
document.write(birthday.getDate()) ; 17
birthday.setDate(25) ;
document.write(birthday) ; Mon Dec 25 1995 03:24:00 GMT+0100
©Tarek ZLITNI - ISIMS
Développement Web II
59
Dates : Exemples
document.write(birthday.getMonth()) ; 11
birthday.setMonth(10) ;
document.write(birthday) ;
Sat Nov 25 1995 03:24:00 GMT+0100
document.write(birthday.getYear()) ; 95
birthday.setYear(96) ;
document.write(birthday) ;
Mon Nov 25 1996 03:24:00 GMT+0100
document.write(birthday.getFullYear()) ; 1996
birthday.setFullYear(2010) ;
document.write(birthday) ;
Thu Nov 25 2010 03:24:00 GMT+0100
©Tarek ZLITNI - ISIMS
Développement Web II
60
30
Images : Propriétés & Méthodes
•
Propriétés
•
•
•
•
•
•
•
complete
width
height
name
src
…
Méthodes
•
constructeur
•
•
Image()
Image(largeur, hauteur)
©Tarek ZLITNI - ISIMS
Développement Web II
61
Images: Exemples
<script type="text/javascript">
// Une image
rouge = new Image(100, 100) ;
rouge.src = 'rouge.gif' ; // Préchargement
// Une autre image
vert = new Image(100, 100) ;
vert.src = 'vert.gif' ; // Préchargement
// Modification de la 13e image de la page Web
document.images[12].src = rouge.src ;
// Modification de la 15e image de la page Web
document.images[14].src = rouge.src ;
</script>
©Tarek ZLITNI - ISIMS
Développement Web II
62
31
Les objets du navigateur
• L'objet le plus haut dans la hiérarchie est window qui
correspond à la fenêtre même du navigateur.
• L'objet document fait référence au contenu de la fenêtre.
• document regroupe au sein de propriétés l'ensemble des
éléments HTML présents sur la page. Pour atteindre ces
différents éléments, nous utiliserons :
• soit des méthodes propres à l'objet document, comme la
méthode getElementById( ), qui permet de trouver
l'élément en fonction de son identifiant (ID);
• soit des collections d'objets qui regroupent sous forme de
tableaux Javascript tous les éléments de type déterminé.
©Tarek ZLITNI - ISIMS
Développement Web II
63
Les objets du navigateur
©Tarek ZLITNI - ISIMS
Développement Web II
64
32
L'objet window
• Propriétés : (accessibles avec IE et N)
• closed : indique que la fenêtre a été fermée;
• defaultStatus : indique le message par défaut dans la barre
de status;
• document : retourne l'objet document de la fenêtre;
• frames : retourne la collection de cadres dans la fenêtre;
• history : retourne l'historique de la session de navigation;
• location : retourne l'adresse actuellement visitée;
• name : indique le nom de la fenêtre;
©Tarek ZLITNI - ISIMS
Développement Web II
65
L'objet window
• navigator : retourne le navigateur utilisé;
• opener : retourne l'objet window qui a créé la fenêtre en
cours;
• parent : retourne l'objet window immédiatemment
supérieur dans la hiérarchie;
• self : retourne l'objet window correspondant à la fenêtre en
cours;
• status : indique le message affiché dans la barre de status;
• top : retourne l'objet window le plus haut dans la hiérarchie.
©Tarek ZLITNI - ISIMS
Développement Web II
66
33
L'objet window
• Méthodes :
• blur( ) : enlève le focus de la fenêtre;
• close( ) : ferme la fenêtre;
• focus( ) : place le focus sur la fenêtre;
• moveBy( ) : déplace d'une distance;
• moveTo( ) : déplace la fenêtre vers un point spécifié;
• open( ) : ouvre une nouvelle fenêtre;
• print( ) : imprime le contenu de la fenêtre;
• resizeBy( ) : redimensionne d'un certain rapport;
• resizeTo( ) : redimensionne la fenêtre;
• setTimeout( ) : évalue une chaîne de caractère après un
certain laps de temps.
©Tarek ZLITNI - ISIMS
Développement Web II
67
L'objet document
• Propriétés :
• applets : retourne la collection d'applets java présente dans
le document;
• cookie : permet de stocker un cookie;
• domain : indique le nom de domaine du serveur ayant
apporté le document;
• forms : retourne la collection de formulaires présents dans le
document;
• images : retourne la collection d'images présentes dans le
document;
• links : retourne la collection de liens présents dans le
document;
©Tarek ZLITNI - ISIMS
Développement Web II
68
34
L'objet document
• referrer : indique l'adresse de la page précédente;
• title : indique le titre du document.
• Méthodes :
• close( ) : ferme le document en écriture;
• open( ) : ouvre le document en écriture;
• write( ) : écrit dans le document;
• writeln( ) : écrit dans le document et effectue un
retour à la ligne
©Tarek ZLITNI - ISIMS
Développement Web II
69
L'objet navigator
• Propriétés
• appName : application (Netscape, Internet Explorer)
• appVersion : numero de version.
• platform : système d’exploitation (Win32)
• plugins
• language
• mimeTypes
• JavaEnabled()
©Tarek ZLITNI - ISIMS
Développement Web II
70
35
Nommage des objets-éléments
•
Pour pouvoir manipuler un objet en javaScript, il doit posséder un nom
•
Pour pouvoir distinguer les différents objets-éléments d’une page web,
il suffit de leur donner un nom à travers de l’attribut NAME
• <Table Name=« tableau1 »>…
• <Table Name=« tableau2 »>…
• <Form Name = « formulaire1 »>…
• <Form Name =« formulaire2 »>…
• <Textarea Name =« texte1»>…
•
Dans le cas où l’objet serait unique alors pas besoin de nom pour
désigner cet objet
• Exemple : le cas de BODY(une seul BODY par document), DOCUMENT
(un seul DOCUMENT par fenêtre)
©Tarek ZLITNI - ISIMS
Développement Web II
71
Manipulation des objets
•
Pour adresser un objet, il ne suffit pas de donner son nom : il faut aussi préciser
son « chemin d’accès » dans l’arborescence de la structure
<HTML><BODY
onLoad="window.document.formulaire.zone.value='Bonj
our';">
<FORM name="formulaire"><INPUT NAME="zone"
TYPE="text">
</FORM></BODY></HTML>
•
Si le nom de la fenêtre est omis, le navigateur utilisera par défaut la fenêtre
courante
•
•
Dans le cas de cadres (frames), il est pertinent de donner le nom de la fenêtre
Il est possible aussi d’omettre window.document : l’adressage réussi puisqu’il
n’y a qu’un seul objet « document» dans la fenêtre
©Tarek ZLITNI - ISIMS
Développement Web II
72
36
Contrôle de formulaires
• Vérifier la cohérence de la saisie
• Contrôles sur le client
• Évite les transmissions client / serveur
• Contrôles possibles:
•
•
•
Présence de valeur
Numérique / Chaîne
Expressions régulières
• Événement onSubmit
©Tarek ZLITNI - ISIMS
Développement Web II
73
Contrôle de formulaires
<html><head><title>Contrôle</title>
<script type="text/javascript">
function verif() {
if (document.formu.txt.value != '')
return window.confirm('Envoyer ?') ;
return false ; }
</script></head><body>
<form name="formu" action= "…" method="GET"
onSubmit="return verif() ;">
<input type="text" name="txt">
<input type="submit" value="Envoyer">
</form></body></html>
©Tarek ZLITNI - ISIMS
Développement Web II
74
37
Formulaires : Exemple
<form name='formu' onSubmit='return verif(this);'>
<input type='text' name='texte'><br>
<select name='sel'>
<option>?
<option value=1>Un
<option value=2>Deux
</select><br>
<input type='radio' name='rad' id='rad1'>
<label for='rad1'>oui</label>
<input type='radio' name='rad' id='rad2'>
<label for='rad2'>non</label><br>
<input type='checkbox' name='chk' id='chk1'>
<label for='chk1'>OK</label><br>
<input type='submit' value='Envoyer'>
</form>
©Tarek ZLITNI - ISIMS
Développement Web II
75
Formulaires : accès aux champs
<form name='formu' onSubmit='return verif( this);'>
<input type='text' name='texte'> ...
<script type="text/javascript">
function verif(f) {
... f.texte.value ; }
</script>
<form name='formu' onSubmit='return verif(); '>
<input type='text' name='texte'> ...
<script type="text/javascript">
function verif() {
... document.formu.texte.value ;
... document.forms[0].elements[0].value ;
... document.forms[ "formu"].elements["texte"].value ; }
</script>
©Tarek ZLITNI - ISIMS
Développement Web II
76
38
Formulaires : Exemple
<script type="text/javascript">
function verif(f)
{
window.alert(f.texte.value) ;
window.alert(f.sel.selectedIndex) ;
window.alert(f.sel[f.sel.selectedIndex].text) ;
window.alert(f.sel[f.sel.selectedIndex].value) ;
window.alert(f.rad[0].checked) ;
window.alert(f.chk.checked) ;
return false ;
}
</script>
©Tarek ZLITNI - ISIMS
Développement Web II
77
Les événements
• Javascript est dépendant des événements
•
se produisent lors d'actions diverses sur les objets d'un
document HTML.
• onLoad;
• onClick
• onMouseover
• onMouseout
• ...
• Il est possible de baser l’exécution de fonctions sur des
événements
©Tarek ZLITNI - ISIMS
Développement Web II
78
39
Les événements
• Evénement onLoad
•
Se produit lorsque une page web est chargée dans la fenêtre
du navigateur
•
Toute la page (y compris les images qu’elle contient si leur
chargement est prévu) doit avoir été chargée pour qu’il ait lieu
•
Cet événement peut être associé à une image seulement ;
auquel cas, il se produit une fois son chargement terminé
<HTML><BODY onLoad="alert('page chargée');">
Exemple de l'événement onLoad
</BODY></HTML>
©Tarek ZLITNI - ISIMS
Développement Web II
79
Les événements
• Evénement onClick
•
Se produit lorsque l’utilisateur clique sur un élément spécifique
dans une page, comme un lien hypertexte, une image, un bouton,
du texte, etc.
•
Ces éléments sont capables de répondre séparément à cet
événement
•
Il peut également être déclenché lorsque l’utilisateur clique
n’importe où sur la page s’il a été associé non pas à un élément
spécifique, mais à l’élément body tout entier
<HTML><BODY>
<INPUT TYPE="Button" Value="cliquer ici”
onClick="alert('Clic')">
</BODY></HTML>
©Tarek ZLITNI - ISIMS
Développement Web II
80
40
Les événements
• Événement onMouseover
•
Analogue à onClick sauf qu’il suffit que l’utilisateur place le
pointeur de sa souris sur l’un des éléments précités (lien
hypertexte, image, bouton, texte, etc.) pour qu’il ait lieu
• Événement onMouseout
•
A l’inverse de onMouseover, cet événement se produit lorsque
le pointeur de la souris quitte la zone de sélection d’un
élément.
<HTML><BODY>
<IMG SRC="image.gif"
onMouseOver="src='image2.gif';"
onMouseOut="src='image.gif';">
</BODY></HTML>
©Tarek ZLITNI - ISIMS
Développement Web II
81
Gestion des événements
•
•
•
Interactions HTML / JavaScript
Possibilité d'associer du code JavaScript à certains événements
dans la page Web
Evénements
•
•
•
•
•
•
•
OnMouseOver
OnMouseOut
OnClick
OnKeyDown
OnFocus
OnBlur
…
©Tarek ZLITNI - ISIMS
Développement Web II
82
41
Mise en place des événements
<a href='URI_cible'
onMouseOver="code_javascript1"
onMouseOut="code_javascript2">Support</a>
<a href='URI_cible'
onMouseOver="a=1"
onMouseOut="b=2">Support</a>
<a href='URI_cible'
onMouseOver="allumer()"
onMouseOut="eteindre()">Support</a>
©Tarek ZLITNI - ISIMS
Développement Web II
83
Événement onKeyUp
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head> <title>onKeyUp</title>
<script type='text/javascript' language='JavaScript'>
<!—
function maj() {
document.f.mail.value =
document.f.prenom.value.toLowerCase()+'.'
+document.f.nom.value.toLowerCase() ; }
// -->
</script>
</head> <body>
<form name='f'>
Nom
<input type='text' name='nom'
onKeyUp='maj()'><br>
Prenom <input type='text' name='prenom' onKeyUp='maj()'><br>
Login
<input type='text' name='mail' disabled>
</form>
</body> </html>
©Tarek ZLITNI - ISIMS
Développement Web II
84
42
Événement onMouseOver / Out
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head> <title>Rollover</title>
<script type='text/javascript' language='JavaScript'>
<!—
function change(image, source) {
document.images[image].src = source; }
// -->
</script>
Tableau des images du document. Accès
par leur nom ou leur indice
</head>
<body>
<a href='#'
onMouseOver="change('image1', 'vert.gif')"
onMouseOut="change('image1', 'rouge.gif')">
<img name='image1' width='100' height='100'
src='rouge.gif' alt='disque'></a>
</body>
</html>
©Tarek ZLITNI - ISIMS
Développement Web II
85
Événement onMouseOver / Out
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html> <head> <title>Rollover</title>
<script type='text/javascript' language='JavaScript'>
function change(image, src) {
document.images[image].src = src ; }
</script> </head> <body> <ul>
<li><a href='#' onMouseOver="change('image1', 'vert.gif')"
onMouseOut="change('image1', 'rouge.gif')">Disque 1</a>
<li><a href='#' onMouseOver="change('image2', 'vert.gif')"
onMouseOut="change('image2', 'rouge.gif')">Disque 2</a>
<li><a href='#' onMouseOver="change('image3', 'vert.gif')"
onMouseOut="change('image3', 'rouge.gif')">Disque 3</a> </ul>
<img name='image1' width='100' height='100' src='rouge.gif'
alt='disque'>
<img name='image2' width='100' height='100' src='rouge.gif'
alt='disque'>
<img name='image3' width='100' height='100' src='rouge.gif'
alt='disque'>
</body> </html>
©Tarek ZLITNI - ISIMS
Développement Web II
86
43
Boîte à outils
// Détection du navigateur
// Netscape 4
var nava = document.layers ? true : false ;
// IE, Firefox, Netscape 6, Opera
var dom = document.getElementById ? true : false ;
// IE, Opera
var iex = document.all ? true : false ;
// Récupérer un objet identifié
function getobj(id)
{
var obj ;
if (nava)
{ obj=document.id }
else if (dom) { obj=document.getElementById(id) }
else if (iex) { obj=id }
return obj ;
}
©Tarek ZLITNI - ISIMS
Développement Web II
87
Boîte à outils
// Récupérer le style d'un objet identifié
function getstyle(id)
{
var obj ;
if (nava)
{ obj=document.id }
else if (dom)
{ obj=document.getElementById(id).style }
else if (iex)
{ obj=id.style }
return obj ;
}
©Tarek ZLITNI - ISIMS
Développement Web II
88
44
Boîte à outils
// Écrire un contenu HTML dans un objet identifié
function writecontent(obj, content)
{
if (nava) {
var objet=getstyle(obj) ;
objet.document.write(content) ;
objet.document.close() ;
}
else if (dom) {
document.getElementById(obj).innerHTML=content ;
}
else if (iex) {
document.all(obj).innerHTML=content ;
}
}
©Tarek ZLITNI - ISIMS
Développement Web II
89
Événement onMouseOver / Out
getobj(id)
<!DOCTYPE html PUBLIC "-//W3C//DTDfunction
HTML 4.01
Transitional//EN">
function getstyle(id)
function writecontent(obj, content)
<html> <head> <title>Image cliquable</title>
<script type='text/javascript' language='JavaScript'
src='outils.js'> </script> </head> <body>
<h1>Survolez mon image pour trouver les zones cliquables ;-) </h1>
<img src='formes.gif' width='256' height='256' alt="L'image sur
laquelle il faut cliquer" usemap='#map'>
<map name='map'>
<area href='#' alt='Cercle' title='Cercle' shape='circle'
coords='94,67,49' onMouseOver="writecontent('info', 'Cercle')"
onMouseOut="writecontent('info', '')">
<area href='#' alt='Rectangle' title='Rectangle' shape='rect'
coords='171,20,233,150' onMouseOver="writecontent('info',
'Rectangle')"
onMouseOut="writecontent('info', '')">
<area href='#' alt='Etoile' title='Etoile' shape='poly'
coords='116,159,128,180,151,185,136,202,138,227,116,217,94,227,
96,203,80,184,103,180' onMouseOver="writecontent('info',
'Etoile')"
onMouseOut="writecontent('info', '')">
</map> <span id='info'></span>
</body> </html>
©Tarek ZLITNI - ISIMS
Développement Web II
90
45
Modification dynamique de style
function getobj(id)
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
function getstyle(id)
<html> <head> <style type'text/css'> <!-function
writecontent(obj, content)
.visible { } .invisible { display : none
; }
.cache_cache { text-align : right ; }
</style>
<script type='text/javascript' language='JavaScript' src='outils.js'>
</script>
<script type='text/javascript' language='JavaScript'>
<!-- function cache_cache(id) {
var obj=getobj(id) ;
if (obj.className == 'visible') obj.className = 'invisible' ;
else obj.className = 'visible' ; } // --> </script>
<title>Cache-cache</title> </head>
<body>
<div class='cache_cache'>
<a href="#" onclick="cache_cache('div1')" >montrer / cacher</a>
</div>
<div id='div1' class='visible'> Texte Texte Texte Texte </div>
</body> </html>
©Tarek ZLITNI - ISIMS
Développement Web II
91
Modification dynamique de contenu
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
function getobj(id)
<html> <head> <style type='text/css'> <!-function getstyle(id)
.visible { } .invisible { display : none
; } writecontent(obj, content)
function
.cache_cache { text-align : right ; }
</style>
<script type='text/javascript' language='JavaScript' src='outils.js'>
</script>
<script type='text/javascript' language='JavaScript'> <!-function cache_cache(lien, id) { var obj=getobj(id) ;
if (obj.className == 'visible')
{ lien.innerHTML = 'monter' ; obj.className='invisible' ; }
else
{ lien.innerHTML = 'cacher' ; obj.className='visible' ; }
} // --> </script>
<title>Cache-cache</title> </head> <body>
<div class='cache_cache'>
<a href="#" onClick="cache_cache(this, 'div1')">cacher</a> </div>
<div id='div1' class='visible'> Texte Texte Texte Texte </div>
</body> </html>
©Tarek ZLITNI - ISIMS
Développement Web II
92
46
Relations entre code HTML et DOM
• Deux visions, normalement concordantes :
•
•
Le code HTML produit par le concepteur
L’interprétation qui en faite par le navigateur
• Discordances possibles :
•
•
•
Erreurs dans le code (code non valide)
Balises non supportées (HTML 5, par exemple)
Modifications de la page par JavaScript
• Comment explorer l’état réel de l’interprétation du code
HTML / JavaScript par la navigateur ?
©Tarek ZLITNI - ISIMS
Développement Web II
93
Solutions pour modifier le DOM
• innerHTML
•
•
Construire une chaîne de caractères contenant du code HTML
•
Le navigateur interprète le contenu de la chaîne de caractères
affectée pour modifier la structure du document
Affecter cette chaîne de caractères à l’attribut innerHTML d’un
élément de la page
• DOM « pur »
•
Construire de nouveaux éléments logiques du document avec
des méthodes JS
•
Construire les liens de parenté entre ces éléments
©Tarek ZLITNI - ISIMS
Développement Web II
94
47
innerHTML : exemple
•
Identifier un élément HTML
<div id="un_id"></div>
•
Accéder à un élément
e = document.getElementById("un_id");
•
Construire une chaîne contenant du HTML
s = "Voici <b>un texte</b>";
•
Modifier le contenu de l’élément
e.innerHTML = s;
•
Interprétation « automatique » par le navigateur du nouveau contenu pour
modifier le document
©Tarek ZLITNI - ISIMS
Développement Web II
95
DOM « pur » : exemple
div
id="un_id"
•
•
•
•
•
Identifier un élément HTML
Voici
b
<div id="un_id"></div>
Accéder à un élément
e = document.getElementById("un_id"); un texte
Créer un nœud de type « texte »
t1 = document.createTextNode('Voici ');
t2 = document.createTextNode('un texte');
Créer un nouveau nœud de type « balise »
b = document.createElement('b');
Construire des liens de parenté
e.appendChild(t1);
b.appendChild(t2); e.appendChild(b);
©Tarek ZLITNI - ISIMS
Développement Web II
96
48
DOM « pur » : exemple 2
<body>
<div><p id="myP">Un peu de texte <a>et un lien</a></p></div>
<script>
var newLink = document.createElement('a');
newLink.id = ‘ABC';
newLink.href = 'http://www.abc.com';
newLink.title = 'Découvrez le Site ABC!';
newLink.setAttribute('tabindex', '10');
document.getElementById('myP').appendChild(newLink);
var newLinkText = document.createTextNode("Le Site du ABC");
newLink.appendChild(newLinkText);
</script>
</body>
©Tarek ZLITNI - ISIMS
Développement Web II
97
Cloner un élément
cloneNode(): Cette méthode requiert un paramètre booléen ( true ou false) : si
vous désirez cloner le nœud avec (true) ou sans (false) ses enfants et ses
différents attributs.
•
Exemple
// On va cloner un élément créé :
var hr1 = document.createElement('hr');
var hr2 = hr1.cloneNode(false); // Il n'a pas d'enfants…
// Ici, on clone un élément existant :
var paragraph1 = document.getElementById('myP');
var paragraph2 = paragraph1.cloneNode(true);
// Et attention, l'élément est cloné, mais pas « inséré » tant que l'on n'a pas appelé
appendChild() :
paragraph1.parentNode.appendChild(paragraph2);
©Tarek ZLITNI - ISIMS
Développement Web II
98
49
Remplacer un élément par un autre
replaceChild(). Cette méthode accepte deux paramètres : le premier est le nouvel
élément, et le deuxième est l'élément à remplacer
•
Exemple
<body>
<div>
<p id="myP">Un peu de texte <a>et un lien</a></p>
</div>
<script>
var link = document.getElementsByTagName('a')[0];
var newLabel= document.createTextNode('et un hyperlien');
link.replaceChild(newLabel, link.firstChild);
</script>
</body>
©Tarek ZLITNI - ISIMS
Développement Web II
99
Supprimer un élément
removeChild(): Cette méthode prend en paramètre le nœud
enfant à retirer.
•
Exemple
var link = document.getElementsByTagName('a')[0];
var oldLink = link.parentNode.removeChild(link); // On
supprime l'élément et on le garde en stock
document.body.appendChild(oldLink); // On réintègre ensuite
l'élément supprimé où on veut et quand on veut
©Tarek ZLITNI - ISIMS
Développement Web II
100
50
Autres actions
•
Vérifier la présence d'éléments enfants
hasChildNodes(): Il suffit d'utiliser cette méthode sur l'élément de
votre choix ; si cet élément possède au moins un enfant, la méthode
renverra true :
•
Insérer à la bonne place : insertBefore()
La méthode insertBefore() permet d'insérer un élément avant un
autre. Elle reçoit deux paramètres : le premier est l'élément à insérer,
tandis que le deuxième est l'élément avant lequel l'élément va être
inséré.
<p id="myP">Un peu de texte <a>et un lien</a></p>
<script>
var paragraph = document.getElementsByTagName('p')[0];
var emphasis = document.createElement('em'),
emphasisText = document.createTextNode(' en emphase légère ');
emphasis.appendChild(emphasisText);
paragraph.insertBefore(emphasis, paragraph.lastChild);
</script>
©Tarek ZLITNI - ISIMS
Développement Web II
101
Autres actions
•
Vérifier la présence d'éléments enfants
hasChildNodes(): Il suffit d'utiliser cette méthode sur l'élément de
votre choix ; si cet élément possède au moins un enfant, la méthode
renverra true :
•
Insérer à la bonne place : insertBefore()
La méthode insertBefore() permet d'insérer un élément avant un
autre. Elle reçoit deux paramètres : le premier est l'élément à insérer,
tandis que le deuxième est l'élément avant lequel l'élément va être
inséré.
<p id="myP">Un peu de texte <a>et un lien</a></p>
<script>
var paragraph = document.getElementsByTagName('p')[0];
var emphasis = document.createElement('em'),
emphasisText = document.createTextNode(' en emphase légère ');
emphasis.appendChild(emphasisText);
paragraph.insertBefore(emphasis, paragraph.lastChild);
</script>
©Tarek ZLITNI - ISIMS
Développement Web II
102
51