Java Script
Java Script
Présentation:
est un langage de programmation créé en 1995 , il va nous permettre de
créer des pages interactives et vivantes à l’aide de script.
Script, suite d'instructions qui vont être interprétées par une programme,
ainsi pour lire un code javascript il va nous valoir un interpréteur.
Tous les navigateurs possèdent déjà leur propre interpréteur javascript.
Le javascript est aussi un langage qui est dit majoritairement client-side,
il existe deux types de langages client-side et server-side.
Le client-side va s’exécuter du coté du client, sur l’ordinateur qui va
demander la page web;
Server-side, au contraire, va s’exécuter du côté serveur, sorte
d’ordinateur très puissant qui va stocker des pages webs puis les
envoyées au client s’il fait la demande.
Il est également un langage orienté objet à prototype, cela veut dire que
javascript va utiliser des objets dans son fonctionnement global et que
ces objets sont prototyper. Un objet correspond à un bloc cohérent de
code qui sert à effectuer telle ou telle opération.
Ce qui fait toute la puissance du javascript, on va pouvoir l’utiliser pour
manipuler dynamiquement le code HTML d’une page.
L’environnement de Travail:
Pour coder en javascript, il me faut un éditeur de texte,
var n = null;
var u = undefined;
var nn = NaN;
x = "quatre";
/*x = x + 1;
x += 2; // x = x + 2
x -= 3; // x = x - 3
x = x - 2;
y = y * 2;
y *= x; // y = y * x;
y /= 2; // y = y / 2;
y %= x; //y = y % X.
var mult = x * y;
var divi = y / Z;
var mod = 13 % 3;*/
var priorite = x + y / ( 4 + Z) % 3;
alert /*("variable mult : " + mult +
"\nvariable divi : " + divi +
"\nvariables mod : " + mod);*/
(priorite);
</script>
La concaténation
signifie mettre bout à bout deux chaînes de caractère pour former une
troisième nouvelle, c’est additionner des chaînes de caractères.
On va concaténer avec le signe PLUS (+) en javascript.
NB: Si on concaténé un chaine de caractère plus une variable number,
tout ce qui suit la chaîne de caractère s'affiche comme chaîne de
caractère.
<script>
var x = 4 + 2 + "1";
var y = "1" + 2 + 4;
var Z = 2 + "un" + 4;
</script>
Symbole Signification
NON !
On va pouvoir utiliser ces opérateurs logiques au sein des conditions
pour effectuer plusieurs comparaisons. Donc plus précisément
l’opérateur logique va nous permettre de créer un intervalle de
comparaison pour une variable.
● Opérateur logique ET/&&
<script>
var heure = 19;
if (heure >= 0 && heure < 12 == true) {
alert("C'est le matin");
}
else if (heure === 12 == true) {
alert("Il est midi pile");
}
else if (heure > 12 && heure <= 24 == true) {
alert("C'est l'après midi ou le soir");
}
else{
alert("La valeur entrée ne semble pas valide");
}
</script>
● Opérateur logique !
<script>
var heure = 26;
if (!(heure <= 16) == true){
alert("Il est plus de 16h");
}
else{
alert("Il est moins de 16h");
}
</script>
</script>
switch(heure){
case 8 :
alert("Il est 8h");
break;
case 9 :
alert("Il est 9h");
break;
case 10 :
alert("Il est 10h");
break;
case 11 :
alert("Il est 11h");
break;
case 12 :
alert("Il est 12h");
break;
default :
alert("Rien à afficher pour cette valeur");
}
</script>
Les boucles
Les boucles nous permettent d’exécuter un bloc de codes une certaine
fois tant qu’une certaine condition ne soit pas remplie.
l'exécution continue tant que nous n’aurons pas eu la valeur du variable
exécuter.
While: Qui signifie tant que;
<script>
var heure = 0;
var y = x++;
var beta = alpha--;
alert(" y : " + y +
"\nx : " + x +
"\nbeta : " + beta +
"\nalpha : " + alpha +
"\nyprime : " + yprime +
"\nxprime : " + xprime +
"\nbetaprime : " + betaprime +
"\nalphaprime : " + alphaprime);
</script>
do{
alert(" x vaut : " + x);
x--;
}
while (x > 10);
</script>
For: signifie pour, va nous permettre de répéter une série d'instructions
à partir d’une valeur donnée jusqu’à une certaine valeur seule.Il est plus
utilisé en javascript parce que qu’il est plus simple à écrire, lisible et la
plus performante.
initier un variable > poser la condition > incrémenter et décrémenter.
<script>
var i = "";
Les Fonctions
Une fonction correspond à une bloc de code dont le but est d'effectuer
une tâche précise.
Ex: alert(“”); : qu’on a utilisé dans les exemples précédents, pour afficher
des messages dans des boîtes de dialogue.
Une fois la fonction créée, on n’a besoin que de l’appeler et non d'en
écrire une autre.
On peut dissocier deux grandes types de fonction en javascript: fonction
native d’une part et les fonctions qu’on va créer par nous même.
Fonction native, créer par d’autres développeurs et instaurer par le
langage javascript lui-même.
Ex: alerte, nous l’appelons pour l'utiliser, nous n'avons jamais défini son
code.
Cependant nous aurons à créer des tâches qui seront à notre besoin.
Pour créer une fonction:
function nom-de-la-fonction(paramètre){
le code qui va s'exécuter quand on va appeler notre fonction
}
Les fonctions n’ont pas obligatoirement besoin de paramètre mais les parenthèses sont
obligatoires.Dans les paramètres nous avons ce qu’on appelle témoin et argument.
function multiplication(x,y){
return x * y;
alert("Ce message ne sera jamais affiché");
}
var resultat1 = multiplication(5,10);
var resultat2 = multiplication(-4,60);
resultat1 += 2;
alert(resultat1);
var moi = {
prenom : "Pierre",
nom : "Giraud",
age : 25,
identite : function(){
return 'Prénom : ' + this.prenom +
'\nNom : ' + this.nom +
'\nAge : ' + this.age;
}
}
alert(moi.identite());
</script>
Valeurs Primitives et objets:
En javascript, il existe des objets natifs,c'est-à-dire ceux qui possèdent déjà des
propriétés et méthodes, et sont prés pour l’emploi.
Quelques un de ces objets:
string(ch. caractère), number(nombre),booléen,array.
Les valeurs primitives sont de formidable simplification qui sont ajoutées dans le
javascript pour simplifier, alléger.(Ils sont traités comme des objets).
<script>
var primitive = "Je suis une valeur primitive";
var longueur_prim = primitive.length;
var maj_prim = primitive.toUpperCase();
obj_cree.prenom = "Pierre";
obj_cree.nom = "Giraud";
obj_cree.age = 25;
alert(obj_cree.prenom);
</script>
● Créer un objet littéral, recommandé pour créer un objet et c’est la manière la
plus simple:
<script>
var moi = {
prenom : 'Ndiawar',
nom : 'DIOP',
age : '24',
id: function() {
return this.prenom + ' ' + this.nom
}
};
alert(moi.id());
</script>
● Créer un objet à partir d’un constructeur:crée d’abord un constructeur et créer
l’objet à partir de ce constructeur.Notre constructeur va lui-même contenir des
méthodes et des propriétés, que va imiter l’objet.
Le constructeur est une fonction qui va être déclarée avec le mot clef
“function”, ensuite dans cette fonction, nous allons définir des propriétés et
des méthodes.
<script>
function identite(p,n,a){
this.prenom = p;
this.nom = n;
this.age = a;
}
BCMID.prenom = 'dsfjkl';
alert(texte.replace("JAVASCRIPT", "PHP"));
</script>
La méthode slice, qui va extraire une partie d’une chaîne et la mettre comme
nouvelle chaine.Il a besoin de deux paramètres, la position de début et la
position de fin de l'extradition.
<script>
var texte = "J'apprends le JAVASCRIPT";
alert(texte.slice(0, 10));
</script>
alert(texte.slice(-11, -1));
</script>
var t = x.toString();
var d = x.toFixed(2);
alert('Valeur de d : ' + d +
'\nType de d : ' + typeof(d));
</script>
var d = x.toPrecision(3);
alert('Valeur de d : ' + d +
'\nType de d : ' + typeof(d));
</script>
var d = x.toExponential(3);
alert('Valeur de d : ' + d +
'\nType de d : ' + typeof(d));
</script>
Quelques méthodes globales: javascript contient des fonctions globales, qui peuvent
être utiles à tous les types de données.Certaines de ces fonctions peuvent être
utilisées comme des méthodes avec des données de type number notamment.
Function number, Function parsefloat, Function parseint;
La méthode Number, qui va être utilisé pour convertir certaine variable javascript en
nombre comme des booléens ou des variables de types DATE:
<script>
var t = true;
var f = false;
var d = new Date();
Objet Array
L'objet global Array est utilisé pour créer des tableaux. Les tableaux sont des
objets de haut niveau (en termes de complexité homme-machine) similaires à des
listes.
Array, est un type de variable spécial qui peut contenir plusieurs valeurs.Il possède
ces propres propriétés et méthodes.
Un indice ou une clé numérique unique va être automatiquement indexé à chaque
valeur du tableau. La première valeur va être indexée par l’indice ou la clé ZÉRO
0.L’association automatique d’une clé numérique est une valeur, est très pratique
pour cibler et pour travailler pour chaque valeur du tableau.
Syntaxe: New Array();
autre méthode pour créer un tableau:
var prenoms = ['Pierre', 'Victor', 'Julia', 'Claire'];
alert(prenoms[2]);//Victor
pour mettre des valeurs textuelles dans un tableau on met le texte entouré des
guillemets et apostrophes et si on veut mettre un nom dans tableau les guillemets et
apostrophes sont pas nécessaire.
Pour récupérer, une valeur dans un tableau, on cite l’index du clé dans le tableau.
Pour modifier, on appelle la clé du valeur du tableau à modifier et changer la valeur.
<script>
var prenoms = ['Pierre', 'Victor', 'Julia', 'Claire'];
prenoms[0] = 'Paul';
alert(prenoms[0]);//Victor
</script>
prenoms[prenoms.length] = 'Florian';
prenoms[prenoms.length] = 'Chloé';
Pour parcourir un tableau est affiché tous ces éléments, on utilise boucle for qui
permet de parcourir chaque valeur dans une tableau et length à l’intérieur de cette
boucle pour sortir dans cette boucle à tout moment.
<script>
var prenoms = ['Pierre', 'Victor', 'Julia', 'Claire'], p = '';
alert(prenoms.prenom1);
</script>
Pour parcourir un objet littéral est affiché ces valeurs, on utilise une nouvelle boucle
for (…...in), cette boucle va parcourir ces objets idéales selon ces clés en utilisant un
alias qui est un mot choisi, qui va ensuite remplacer par les différentes clés de notre
objet.
<script>
var prenoms = {
prenom1 : 'Pierre',
prenom2 : 'Victor',
prenom3 : 'Julia',
prenom4 : 'Claire'
}, p = '';
La méthode Splice:
Elle nous permet de supprimer et d’ajouter, un élément n’importe où dans la
tableau, elle a besoin au minimum deux (2) paramètre pour être utilisé, une
paramètre POSITION, à laquelle les éléments vont être ajoutés et combien
d’éléments vont être AJOUTER, vont se placer juste à la place de l’indice
donné.
Après ces deux paramètres obligatoires, on peut ajouter autant d’autres
paramètres qu’on peut insérer de valeurs.
<script>
var prenoms = ['Baye', 'Cheikh', 'Mamour', 'Insa', 'Diop'],
p='';
prenoms.splice(1,0, 'RUHU','Lahi');
La méthode sort
Permet de classer les éléments dans un tableau; Elle trie les éléments d’un
tableau selon l’ordre alphabétique de leurs valeurs, les valeurs en majuscules
sont classées avant celle en minuscule.
<script>
var prenoms = ['Baye', 'Cheikh', 'Mamour', 'Insa', 'Diop'],
p='';
prenoms.sort();
prenoms.sort();
prenoms.reverse();
L’OBJET DATE:
L’objet DATE, est un objet native en javascript qui va nous permettre de
manipuler bien évidemment des dates. Ils peuvent être écrits littéralement soit
sous forme de chaînes de caractères soit sous forme de timestamp (Le
Timestamp Unix correspond au nombre de secondes écoulées depuis le premier
janvier 1970 à minuit UTC ou GMT (c’est-à-dire minuit selon l’heure de Londres).)
● Date actuelle;
Sous forme littéral, on utilise la fonction constructeur Date().
Sous forme de nombre milliseconde, on va utiliser la méthode Now() de l’objet
Date = Date.Now();
<script>
var datlit = Date();
var dateMS = Date.now();
alert('Date littéral : ' + datlit +
'\nDate en milliseconde : ' + dateMS);
</script>
Pour créer un objet de type date nous serons obligés d’utiliser le constructeur
Date avec le mot clé new().
1 exemple création avec new date ();
<script>
var d = new Date();
alert(d);
</script>
</body>
2 exemple;date littéral en argument notre constructeur Date(date en anglais et
au bon format pour que javascript reconnais.
<script>
var d = new Date("August 12, 2021 19:55:00");
alert(d);
</script>
3 exemple, un nombre en argument de notre constructeur, par milliseconde
écoulé depuis 1970
<script>
var d = new Date(604800000);
alert(d);
</script>
4 exemple,créer un objet de type Date en indiquant 7 nombres comme
argument pour notre constructeur Date: (7 nombres=AAAA,MM,JJ)
<script>
var d1 = new Date(2021,8,12,12,30,28,110);
alert('Date 1 : ' + d1 +
'\nDate 2 : ' + d2);
</script>
var dh = d.getHours();
var dmi = d.getMinutes();
var ds = d.getSeconds();
var dMs = d.getMilliseconds();
Les setters vont être des méthodes pour définir une date.(set…();)
Notez que ce système de « getters » et de « setters » n’est pas propre à l’objet Date
en JavaScript mais est une convention partagée par de nombreux langages de
programmation.
<script>
var d = new Date();
d.setFullYear(2021,8,13);
d.setHours(19);
d.setMinutes(39);
d.setSeconds(25);
var dy = d.getFullYear();
var dmo = d.getMonth();
var dday = d.getDay();
var ddate = d.getdate();
var dh = d.getHours();
var dmi = d.getMinutes();
var ds = d.getSeconds();
var mois = ['janvier','février', 'mars', 'avril', 'mai',
'juin', 'juillet', 'aout', 'septembre', 'octobre', 'novembre',
'décembre'];
var jour = ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi',
'vendredi', 'samedi'];
alert('Le : ' + jour[dday] + ' ' + ddate + ' ' + mois[dmo] + '
' + dy +
'Il est : ' + dh +'h ' + dmi +'mn et ' + ds +'s. ');
</script>
</body>
La Portée En Javascript:
Désigne la possibilité d'accéder ou non à certaine variable, fonction ou
objet contenu à l’intérieur de variable.
Les variables peuvent définir soit localement ou globalement. Une
variable est dite local si il est enregistré sur une fonction, il est joignable
que localement un endroit spécifique dans le script.
<script>
function locale(){
var x = 5;
alert(x);
}
locale();
</script>
Une variable globale est définie dans l’espace global d’un script. C’est à
dire qu'en dehors de toute fonction, il va avoir une portée globale et va
être accessible dans tout le script.
<script>
var x = 4
function locale(){
alert(x);
}
locale();
alert(x);
</script>
Il est généralement interdit de constituer des variables globales dans le
contexte local, pour des clartés dans le script, pour bien énumérer et de
savoir chaque variable appartient à cette fonction dans le
script(Lisibilité).
<script>
var x = 4
function locale(){
var x = 7
return x;
}
locale();
alert('X globale : ' + x +
'\nX local : ' + locale());
</script>
Les Fonctions Anonymes:
Comme son nom l’indique, ce sont des fonctions sans nom.
<script>
var carre = function(x) {
alert('Carré de ' + x + ' = ' + x*x);
};
carre(y);
</script>
Les Fonctions AUTO-INVOQUÉES
Des fonctions qui vont s’appeler ou encore s'exécuter eux même, pour
créer un auto-invoquées à partir d’une fonction, il va falloir ajouter un
premier couple de parenthèses autour de la fonction et un seconde
après la fonction.
Les closures en JavaScript
Une closure ou une fermeture est une fonction qui va récupérer et
pouvoir utiliser les variables d’environnement dans lequel elle a été
créée. Il nous permet d’isoler ou d’enfermer une partie du code et de
pouvoir utiliser et de récupérer des variables qui ne sont accessibles
normalement que depuis l’intérieur de ce code.
<script>
function compteur() {
var i = 0;
return function(){
return i++;
}
}
<script>
alert(titre);
</script>
</body>
getElementsByTagName: donner toutes les informations relatives à tous
les éléments html, exemple élément p dans un tableau, il va prendre le
nom du type de l’élément à récupérer et on récupère l’élément par un
indice.
<body>
<h1 id="gros_titre"> Découverte du DOM HTML</h1>
<P>Du texte et <a href="http://pierre-giraud.com">un lien</a> </P>
<p>Deuxiéme paragraphe</p>
<script>
<script>
<script>
var lien = document.querySelector('p a');
var p = document.querySelectorAll('.para');
<script>
var titre = document.getElementById('gros_titre').innerHTML;
alert(titre);
</script>
</body>
----------------------------------------------------------------
<body>
<h1 id="gros_titre"> Découverte du DOM HTML</h1>
<P class="para">Du texte et <a href="http://pierre-giraud.com">un
lien</a> </P>
<p class="para">Deuxiéme paragraphe</p>
<script>
var p = document.querySelector('.para').innerHTML;
alert(p);
</script>
</body>
textContent, récupère que le texte qui est à l’intérieur d’un élément.
<body>
<h1 id="gros_titre"> Découverte du DOM HTML</h1>
<P class="para">Du texte et <a href="http://pierre-giraud.com">un
lien</a> </P>
<p class="para">Deuxiéme paragraphe</p>
<script>
var p = document.querySelector('.para').innerHTML;
var t = document.querySelector('.para').textContent;
alert('Contenu récupéré avec innerHTML : \n ' + p +
'\n\nContenu récupéré avec textContent : \n ' + t);
</script>
</body>
InnerHTML et textContent, sont des propriétés de l’objet élément et non
pas du document.
Le DOM, nous offre la possibilité via ces propriétés d’accéder
directement à un type ou à une collection d’éléments HTML. (Accéder à
Body avec la propriété de mm nom, un élément lien par links...).
<body>
<h1 id="gros_titre"> Découverte du DOM HTML</h1>
<P class="para">Du texte et <a href="http://pierre-giraud.com">un
lien</a> </P>
<p class="para">Deuxiéme paragraphe</p>
<script>
var titre_page = document.title;
var page = document.body;
var lien = document.links;
<script>
var titre = document.getElementById('gros_titre');
var texteTitre = titre.innerHTML;
<script>
document.getElementById('gros_titre').innerHTML = 'Titre
Modifié';
</script>
</body>
On peut utiliser d’autres opérateurs d'affectations pour modifier du
contenu:
+=, ajoute du contenu à l’élément sélectionné.(et avec innerHTML nous
pouvons augmenter une balise à la contenu à modifier.
<body>
<h1 id="gros_titre"> Découverte du DOM HTML</h1>
<P class="para">Du texte et <a href="http://pierre-giraud.com">un
lien</a> </P>
<p class="para">Deuxiéme paragraphe</p>
<script>
document.getElementById('gros_titre').innerHTML += ' <mark>et
de la modification en JavaScript</mark>';
</script>
</body>
Pour modifier la valeur d’un attribut HTML, nous utilisons la propriété
attribute de l’objet élément, le nom de l’objet d’attribut à modifier:
<body>
<h1 id="gros_titre"> Découverte du DOM HTML</h1>
<P class="para">Du texte et <a href="http://pierre-giraud.com">un
lien</a> </P>
<p class="para">Deuxiéme paragraphe</p>
<script>
document.getElementById('a').href = 'http://wikipedia.org';
</script>
</body>
Pour modifier la valeur de la classe: on utilise .className
<body>
<h1 id="gros_titre"> Découverte du DOM HTML</h1>
<P class="para">Du texte et <a href="http://pierre-giraud.com">un
lien</a> </P>
<p class="para">Deuxiéme paragraphe</p>
<script>
document.querySelector('.para').className = 'para1';
</script>
</body>
Modifier ou ajouter le css d’un élément HTML on utilise la propriété Style
d'objet élément et la propriété CSS à modifier ou à ajouter:
On commence par sélectionner avec getElement
<body>
<h1 id="gros_titre"> Découverte du DOM HTML</h1>
<P class="para">Du texte et <a href="http://pierre-giraud.com">un
lien</a> </P>
<p class="para">Deuxiéme paragraphe</p>
<script>
document.getElementById('gros_titre').style.color = 'orange';
document.getElementById('gros_titre').style.fontSize = '40px';
</script>
</body>
<script>
var newPara = document.createElement('p');
newPara.id = 'nouveau';
newPara.appendChild(texte);
document.body.appendChild(newPara);
</script>
</body>
AppendChild, elle va toujours insérer un objet en tant que dernier enfant
de type de l’élément indiqué;
Parfois, on voudra insérer un élément dans une position précise dans
notre page HTML.
<body>
<h1 id="gros_titre"> Découverte du DOM HTML</h1>
<P class="para">Du texte et <a href="http://pierre-giraud.com">un
lien</a> </P>
<p class="para">Deuxiéme paragraphe</p>
<script>
var newPara = document.createElement('p');
newPara.id = 'nouveau';
newPara.appendChild(texte);
<script>
var titre = document.getElementById('gros_titre');
var parent = document.body;
parent.removeChild(titre);
</script>
</body>
Pour modifier ou remplacer un élément HTML d’une page JavaScript, on
utilise la méthode replaceChild de l’objet élément. Elle va prendre deux
arguments, la valeur de remplacement et le nom de remplacement.
<body>
<h1 id="gros_titre"> Découverte du DOM HTML</h1>
<P class="para">Du texte et <a href="http://pierre-giraud.com">un
lien</a> </P>
<p class="para">Deuxiéme paragraphe</p>
<script>
var titre = document.getElementById('gros_titre');
var parent = document.body;
parent.replaceChild(nouveauTitre, titre);
</script>
</body>
div.style.color = 'orange';
</script>
</body>
childNode et nodeValue:
Nous permet d’accéder au noeud d’enfant dans certain noeud HTML, la
propriété va renvoyer un tableau contenant les enfants d’un certain
noeuds, on va soit recupérer tous les enfants à un coup à travers d’une
boucle ou soit accéder à un élément en particulier en passant par une
clé à childNode ou au résultat envoyé par childNode.
NB/-1/ Cependant un nœud élément ne contient pas de texte mais plutôt
des nœuds de type de texte qui contient eux même une valeur qui est
du texte.Pour accéder à ces valeurs textuelles, on doit soit utiliser en
plus la propriété NodeValue (valeur contenu dans un noeud) avec
childNode ou utiliser directement innerHTML ou TextContent.
NB/-2/ Très important pour l'exploitation de ChildNodes, les espaces
dans le code sont considérés comme des nœuds textuels enfants.
<body>
<h1 id="gros_titre">Le DOM: Navigation</h1>
<div>
<p class="para">Du texte</p>
<p class="para">Un Deuxième paragraphe</p>
</div>
<script>
var b = document.body;
var p1 = div.childNodes[1];
alert(texte);
</script>
</body>
firstChild et LastChild:
Nous permet d’accéder respectivement au premier et au dernier enfant
d’un nœud. Les espaces entre les éléments sont considérés comme du
texte et le texte comme du nœud de type texte.
<body>
<h1 id="gros_titre">Le DOM: Navigation</h1>
<div>
<p class="para">Du texte</p>
<p class="para">Un Deuxième <strong>paragraphe</strong></p>
</div>
<script>
var p2 = document.querySelectorAll('.para')[1];
<div>
<p class="para">Du texte</p>
<p class="para">Un Deuxième <strong>paragraphe</strong></p>
</div>
<script>
var titre = document.getElementById('gros_titre');
L’utilisation du mot clé This dans la gestion des éléments. , This nous
sert de référence à différents objets selon le contexte.
Dans le contexte de la gestion d’événements This va faire référence à
l’objet qui représente l’élément HTML qui est le sujet de l’événement
<p onclick="alert('Bravo');">Cliquez-Moi, Cliquez-Moi</p>
Le paragraphe en exemple est le sujet de l’événement car c’est lui qui
possède l’attribut d’événements et le code associé qui va déclencher
une action lors du clique d’un utilisateur.
<p onclick="this.textContent='Merci !'">Cliquez-Moi, Cliquez-Moi</p>
La gestion des événements va devenir intéressante si on commence à
réagir les événements via le DOM HTML.
Le DOM HTML, va nous permettre d’assigner des gestionnaires
d’événements spécifiques à des éléments HTML en utilisant javascript.
Nous allons utiliser du code javascript plutôt que des attributs HTML
pour créer des événements.
Il existe deux manières pour la construction d’événements en
JavaScripts: soit utilisé des propriétés qui vont assignés un gestionnaire
d’événements à un élément spécifique en HTML;
Soit utiliser la méthode AddEventlistener. La première, l’utilisation des
propriétés et une ancienne méthode qui possède des limitations. L’une
des plus importantes d’entre elles est que on ne peut pas assigner
plusieurs fois le même gestionnaire d’événements à un élément HTML.
Ancien Manière:
<body>
<p>Cliquez-moi, Cliquez-moi!</p>
<p>Un deuxiéme paragraphe</p>
<script>
var p1 = document.querySelector('p');
function Bravo(){
this.innerHTML = '<strong>Bravo ! </strong>';
this.style.color = 'orange';
};
</script>
</body>
La Méthode ADDEVENTLISTENER():
Cette méthode est appelée gestionnaire d’événement car nous permet
de lier un code à un événement. Le code lié va être exécuté dès le
déclenchement de l’événement. Ca appartient à l’objet element et a
besoin de deux arguments pour fonctionner, le nom de l’événement
déclencheur de l’action et le code de l’action à exécuter. Les
événements vont avoir des noms similaires aux attributs HTML mais ne
vont plus être procédé du On.
<script>
var p1 = document.querySelector('p');
p1.addEventListener('click',changeTexte);
function changeTexte(){
this.innerHTML = '<strong>Bravo !</strong>';
this.style.color = 'orange';
};
</script>
</body>
<script>
var p1 = document.querySelector('p');
p1.addEventListener('click',function(){
this.innerHTML = '<strong>Bravo !</strong>';
this.style.color = 'orange';
});
</script>
</body>
<script>
var p1 = document.querySelector('p');
p1.addEventListener('mouseover',Fonction1);
p1.addEventListener('mousedown',Fonction2);
function Fonction1(){
this.innerHTML = 'Cliquez moi Maintenant';
this.style.backgroundColor = 'orange';
}
function Fonction2(){
this.innerHTML = 'Bravo';
this.style.Color = '#26C';
this.style.fontWeight = 'bold';
this.style.fontSize = '24px';
}
</script>
</body>
<script>
var p1 = document.querySelector('p');
p1.addEventListener('mouseover',Fonction1);
p1.addEventListener('mouseout',Reset1);
p1.addEventListener('mousedown',Fonction2);
p1.addEventListener('mouseup',Reset2);
function Fonction1(){
this.innerHTML = 'Cliquez moi Maintenant';
this.style.backgroundColor = 'orange';
}
function Reset1(){
this.innerHTML = 'Passez sur moi';
this.style.backgroundColor = '';
}
function Fonction2(){
this.innerHTML = 'Bravo';
this.style.Color = '#26C';
this.style.fontWeight = 'bold';
this.style.fontSize = '24px';
}
function Reset2(){
this.innerHTML = 'Passer sur moi';
this.style.Color = '';
this.style.fontWeight = '';
this.style.fontSize = '';
}
</script>
</body>
Propagation d’événements:
Signifie l’ordre dans lequel deux événements vont se déclencher.
Exemple un élément <p> qui se contient dans l’élément <div>, quand on
passe notre souris dans l’élément <p>, l’élément parent <div> se
déclenche en même temps que l’élément <p>. La solution qu’on peut
amener à ce problème est de définir l’ordre de déclenchement de quel
élément va se déclencher en premier.
<body>
<h1 id="gros_titre">Les événements : Propagation</h1>
<div id="div">
<p>Un premier paragraphe</p>
<p>Une deuxiémé paragraphe</p>
</div>
<script>
var div = document.getElementById('div');
var p1 = document.querySelector('p');
div.addEventListener('click' ,MessageDiv);
p1.addEventListener('click' ,MessageP);
function MessageDiv(){
alert('Evénement du DIV');
}
function MessageP(){
alert('Evénement du P');
}
</script>
</body>
Troisième argument de déclenchement booléen d’événement dans
l’exemple précédente:
La propagation d’un événement par de la racine pour aller trouver en
profondeur un élément qui contient un gestionnaire relatif à l’événement
(phase de la capture) et ensuite remonté le long de la rondom(phase de
bouillonnement). Les événements qui vont répondre à la phase de
capture sont les premiers à déclencher après celle des événements à la
phase de bouillonnement.
<body>
<h1 id="gros_titre">Les événements:
Propagation(Capture/bouillonnement)</h1>
<div id="div1">
<p id="p1">Phase de bouillonnement utilisée</p>
</div>
<div id="div2">
<p id="p2">Phase de Capture utilisée</p>
</div>
<script>
var div1 = document.getElementById('div1');
var p1 = document.getElementById('p1');
var div2 = document.getElementById('div2');
var p2 = document.getElementById('p2');
L’objet EVENT:
L’objet event possède des propriétés et des méthodes qui vont nous
informer sur le contexte de l’événement déclenché ou qui vont impacter
l’environnement. Il est accessible que durant le déclenchement d’un
événement et il faut y accéder au sein de la fonction qui va servir une
action lors du déclenchement de l’événement.
Il possède plus de dizaines de propriétés:
● Target:retourne l'élément (objet) enfant le plus profond (du plus
bas niveau hiérarchique) survolé lors du déclenchement de
l'événement.”retourne le type de l’élément qui a déclenché
l’événement”
● currentTarget: retourne l'élément (objet) qui a déclenché
l'événement. “retourne le type de l’élément qui porte le
gestionnaire de l’événement déclenché”
<body>
<div id="div1">
</div>
<script>
var p1 = document.getElementById('p1');
div1.addEventListener('click', Message);
function Message(event){
</script>
</body>
● Type: cette propriété va retourner le type d’élément qui a été
déclenchée, il va s’utiliser de façon analogue aux propriétés
précédentes.
<body>
<h1 id="gros_titre">Les événements:
Propagation(Capture/bouillonnement)</h1>
<div id="div1">
<p id="p1">UN exemple plus <strong>Complexe</strong></p>
</div>
<script>
var div1 = document.getElementById('div1');
var p1 = document.getElementById('p1');
div1.addEventListener('click', Message);
function Message(event){
this.innerHTML = 'Type d\événement déclenché : ' +
event.type;
}
</script>
</body>
● On peut empêcher la propagation d’un événement par la méthode
StopPropagation (méthode event).
stopPropagation(): Cette méthode empêche la propagation du flux
d'événement. Si le flux se propage automatiquement sur les deux
phases qu'on a vu dans le paragraphe précédent, la méthode
stopPropagation() permet de rompre ce flux de telle sorte à empêcher
la capture répétée de l'événement par les objets qui s’emboîtent les uns
dans les autres et exécuter la même fonction plusieurs fois.
<body>
<h1 id="gros_titre">Les événements:
Propagation(Capture/bouillonnement)</h1>
<div id="div1">
<p id="p1">UN exemple plus <strong>Complexe</strong></p>
</div>
<script>
var div1 = document.getElementById('div1');
var p1 = document.getElementById('p1');
function TexteD(e){
alert('Stop à la propagation');
e.stopPropagation();
}
function TexteP(){
alert('Ceci ne s\'affichera pas');
}
</script>
</body>
● preventDefault(): Cet événement fonctionne seulement avec les
événements qu’on peut stopper l’action donc pas avec tous les
événements.Elle ne va pas stopper la propagation d’un événement
mais stopper un événement sur un événement ciblé.
Cette méthode empêche le navigateur d'entamer une action par défaut.
Par exemple, le fait de cliquer sur un bouton de type submit redirige le
navigateur vers la page définie dans l'attribut action du formulaire, ce
qui représente le comportement par défaut. Or, si on déclare
convenablement la méthode preventDefault(), le navigateur n'entame
pas la redirection.
<body>
<h1 id="gros_titre">Les événements:
Propagation(Capture/bouillonnement)</h1>
<div id="div1">
<p id="p1">UN exemple plus <strong>Complexe</strong></p>
</div>
<script>
var div1 = document.getElementById('div1');
var p1 = document.getElementById('p1');
function TexteD(e){
e.preventDefault();
}
function TexteP(){
alert('La méthod preventDefault n\'empéche pas la
propagation');
}
</script>
</body>
<script>
window.alert('Avec window');
alert('Sans window');
</script>
</body>
Quelques méthodes importants de l’objet window:
La méthode Open: va nous servir à ouvrir un nouvel onglet ou une
nouvelle fenêtre, il a quatre argument, toute optionnel.(utilisée sans
argument cet argument va ouvrir une onglet vide).
ARGUMENT:
url de destination, peut être une url de page web, image, vidéo etc.
Où doit souffrir une page,dans l’onglet courant, dans une fenêtre, dans
une page web ou dans un nouvel onglet etc. La valeur argument que
nous intéressons ici est la valeur blank, qui nous permet d'ouvrir une
nouvelle fenêtre comme avec l’élément a en HTML. Avec cet argument
nous pouvons donner un nom à notre fenêtre qui lui est propre, pour
pouvoir le manipuler à l’avenir.
3éme argument de l’objet open va être une liste d’éléments qui vont
nous permettre d’agir directement dans la fenêtre ouverte, par exemple
la largeur, hauteur de la fenêtre, l’affichage, position, affichage d’une
barre de menu ou pas etc.
Le dernier argument va être un booléen, qui va spécifier si la nouvelle
fenêtre ouverte doit remplacer la fenêtre actuelle dans l’historique des
navigations ou être ajouter à celui-ci.
<body>
<h1 id="gros_titre">Le BOM</h1>
<p>Cliquez pour ouvrir un nouvel onglet (méthode open)</p>
<script>
var para = document.querySelector('p');
para.addEventListener('click', fenetre);
function fenetre(){
window.open('http://pierre-giraud.com', '_blank', 'width =
500, height = 300');
}
</script>
</body>
La méthode close: Nous permet de fermer une fenêtre ou un onglet,
elle n’a pas besoin d’argument. et la méthode contraire d’open.
<body>
<h1 id="gros_titre">Le BOM</h1>
<button id="ouvrir">Ouvrir une nouvelle fenètre</button>
<button id="fermer">Refermer la fenètre</button>
<script>
var ouvrir = document.getElementById('ouvrir');
var fermer = document.getElementById('fermer');
var fenetre = '';
ouvrir.addEventListener('click', fouvrir);
fermer.addEventListener('click', ffermer);
function fouvrir(){
fenetre = window.open('http://pierre-giraud.com', '_blank',
'width = 500');
}
function ffermer(){
fenetre.close();
}
</script>
</body>
La méthode resize to: va nous permettre de redimensionner une
fenêtre ou un onglet. Elle prend comme argument la largeur et la
hauteur en pixel.
<body>
<h1 id="gros_titre">Le BOM</h1>
<button id="ouvrir">Ouvrir une nouvelle fenètre</button>
<button id="fermer">Refermer la fenètre</button>
<button id="modifier">Changer La taille</button>
<script>
var ouvrir = document.getElementById('ouvrir');
var fermer = document.getElementById('fermer');
var modifier = document.getElementById('modifier');
var fenetre = '';
ouvrir.addEventListener('click', fouvrir);
modifier.addEventListener('click', fmodifier);
fermer.addEventListener('click', ffermer);
function fouvrir(){
fenetre = window.open('http://pierre-giraud.com', '_blank',
'width = 500');
}
function fmodifier(){
fenetre.resizeTo(150,150);
}
function ffermer(){
fenetre.close();
}
</script>
</body>
L’objet screen: Nous donne accès à des informations qui concernent
l’écran de nos utilisateurs (visiteurs), comme la taille ou la résolution de
l’écran. Il possède 6 propriétés importants:
width,la largeur totale de l’écran; availWidth, la largeur de l’écran moins
celle de la barre de tache; height, la hauteur de la taille de l’écran;
availHeight, la hauteur de la taille de l’écran moins celle de la barre de
tache; colorlabs, la profondeur de la palette de couleurs de l’écran en
bite; pixelDepth, résolution de l’écran en bite par pixel.
<body>
<h1 id="gros_titre">Le BOM: Objet screen</h1>
<p></p>
<script>
var hauteur = screen.height;
var hauteurDispo = screen.availHeight;
var reso = screen.pixelDepth;
<script>
var langue = navigator.language;
var navigateur = navigator.appName;
var version = navigator.appVersion;
var moteur = navigator.product;
var cookieA = navigator.cookieEnabled;
Moteur : Gecko
COOKIE ? : true
<script>
var para = document.querySelector('p');
var loc = navigator.geolocation;
(function(){
if (loc) {
loc.getCurrentPosition(coordonnes);
}
else{
para.innerHTML = 'Localisation non disponible';
}
})();
function coordonnes(x){
para.innerHTML =
'Latitude : ' + x.coords.latitude +
'<br>Longitude : ' + x.coords.longitude;
}
</script>
</body>
L’Objet Location:
Il est un objet appartenant à window, nous fournie des
informations de l’url de la page actuelle. Il possède 9
propriétés:
H, qui retourne la partie ancre d’une url;
search, qui retourne la partie recherche d’une url;
Pathname, qui retourne le chemin de l’url;
href, qui retourne l’url complète;
Hostname, qui retourne le nom de l'hôte;
Port, qui retourne le port de l’url;
Protocole, retourne le protocole de l’url;
Host, qui retourne le nom de l'hôte et le port relative à l’url;
Origin, qui retourne l'hôte, le port et le protocole de l’url.
Il possède trois (3) méthodes important:
Esend, qui va charger un nouveau document;
reload, qui va recharger un nouveau document;
replace, qui va remplacer le document actuel par un autre.
<body>
<h1 id="gros_titre">Le BOM : L'Objet Location</h1>
<button id="charger">charger un nouveau document</button>
<button id="recharger">Recharger le document</button>
<button id="changer">Remplacer le document</button>
<p></p>
<script>
var para = document.querySelector('p');
var charger = document.getElementById('charger');
var recharger = document.getElementById('recharger');
var changer = document.getElementById('changer');
charger.addEventListener('click', charge);
recharger.addEventListener('click', recharge);
changer.addEventListener('click', chang);
function charge(){
location.assign('http://pierre-giraud.com');
}
function recharge(){
location.reload();
}
function chang(){
location.replace('http://youtube.com');
}
var url = location.href;
var chemin = location.pathname;
para.innerHTML = 'URL : ' + url + '<br>Chemin : ' + chemin;
</script>
</body>
L’Objet History:
Appartient à l’objet window, va nous permettre de nous
déplacer dans l'histoire de nos visiteurs et de nous donner des
informations relatives à celui-ci.
Il possède une propriété et trois (3) méthodes:
La propriété Lens, qui nous permette de connaître le nombre
d’url dans l’historique;
La méthode back, qui nous permet de charger la dernière l’url
disponible dans l’historique, la plus récente;
La méthode forward, permette de charger l’url suivant une
première url dans l’historique, directement la plus récente par
rapport à une première;
La méthode Go, permet de charger l’url spécifique dans
l’historique.
<body>
<h1 id="gros_titre">Le BOM : L'Objet Location</h1>
<button id="precedent">charge la dernière page visitée</button>
<button id="suivant">Charge la page suivante dans
l'historique</button>
<button id="specefique">3 pages en arrière</button>
<p></p>
<script>
var para = document.querySelector('p');
var precedent = document.getElementById('precedent');
var suivant = document.getElementById('suivant');
var specefique = document.getElementById('specefique');
precedent.addEventListener('click', arriere);
suivant.addEventListener('click', avant);
specefique.addEventListener('click', spec);
function arriere(){
history.back();
}
function avant(){
history.forward();
}
function spec(){
history.go(-3);
}
var histo = history.length;
para.innerHTML = 'URLs : ' + histo;
</script>
</body>
Recherches et Remplacements:
Nous allons pouvoir utiliser certaines méthodes des objets
String et Regex sur nos expressions régulières afin justement
de faire des recherches ou des remplacements.
Méthode Math, de rechercher des caractères dans une
séquence de caractères, un argument de la séquence de
caractère à recharger.
<body>
<h1>Regex: Recherches et Remplacements</h1>
<p>Engagez vous qu'ils disaient, rengagez vous qu'ils disaient</p>
<p id="reg"></p>
<script>
var expr = document.querySelector('p');
var r1 = /engagez/i;
var r2 = /engagez/ig;
var res1 = expr.textContent.match(r1);
var res2 = expr.textContent.match(r2);
var r1 = /engagez/i;
var r2 = /engagez/;
var r1 = /vous/;
var r2 = /vous/g;
var r1 = /ENGAGEZ/;
var r2 = /ENGAGEZ/i;
<script>
var rec = document.querySelector('p').textContent;
var r1 = /10+/g;
Quantifieur Sens
a? On veut 0 ou 1 <<a>>
<script>
var rec = document.querySelector('p').textContent;
var r1 = /x+/;
var res1 = r1.test(rec);
var r2 = /e(nd)?/g;
var res2 = rec.match(r2);
var r3 = /e$/i;
var res3 = r3.test(rec);
var r4 = /p{2}/;
var res4 = r4.test(rec);
var r5 = /Java(?=Script)/;
var res5 = r5.test(rec);
Les options qu’on appelle aussi modificateur, vont servir à ajouter des
options à notre recherche. Représenter par des lettres qu’on va écrire
après le deuxième caractère encadrement de notre regex. Il existe
trois(3) options:
i, nous permet de ne pas tenir compte de la case de notre regex, crypte
tous les combinaisons minuscule et majuscule représentant la séquence
de notre regex;
g, sert à exécuter les recherches globales plutôt de s'arrêter au premier
résultat trouvé;
n, va nous permettre de détecter notre recherche dans plusieurs lignes,
va considérer chaque retour à la ligne comme la fin d’une première ligne
et le début d’une deuxième ligne.
<body>
<p>On apprend à utiliser les regex en JavaScript</p>
<p id="reg"></p>
<script>
var rec = document.querySelector('p').textContent;
var rec2 = 'Je suis sur _n deux lignes en Js';
var r1 = /on/i;
var res1 = rec.match(r1);
var r2 = /e/g;
var res2 = rec.match(r2);
var r3 =/^d/;
var res3 = r3.test(rec2);
var r4 = /^d/m;
var res4 = r4.test(rec2);
var resultat = document.getElementById('reg');
resultat.innerHTML =
'Résultat regex 1 : ' + res1 +
'<br>Résultat regex 2 : ' + res2 +
'<br>Résultat regex 3 : ' + res3 +
'<br>Résultat regex 4 : ' + res4;
</script>
</body>
Résultat regex 1 : On
var r1 = /aeiouy/g;
var res1 = rec.match(r1);
var r2 = /[aeiouy]/g;
var res2 = rec.match(r2);
Classe SENS
Trouve n’importe quel caractère qui n’est pas une lettre minuscule de l’alphabet
[^a-z]
Trouve n’importe quel caractère qui n’est pas un nombre compris entre 0 et 9
[^0-9]
<body>
<p>On apprend à utiliser les regex en JavaScript</p>
<p id="reg"></p>
<script>
var rec = document.querySelector('p').textContent;
var r1 = /[C-X]/g;
var res1 = rec.match(r1);
var r2 = /[^aeiou]/g;
var res2 = rec.match(r2);
var r3 = /[0-9]/g;
var res3 = rec.match(r3);
var r4 = /^[A-Z]/;
var res4 = r4.test(rec);
var r5 = /[0-9]{4}/;
var res5 = rec.match(r5);
Tout sauf voyelles minuscules : O,n, ,p,p,r,n,d, ,à, ,t,l,s,r, ,l,s, ,r,g,x, ,n, ,J,v,S,c,r,p,t
Tout sauf voyelles minuscules : O,n, ,p,p,r,n,d, ,à, ,t,l,s,r, ,l,s, ,r,g,x, ,n, ,J,v,S,c,r,p,t, ,n, ,2,0,1,6
var r2 = /[a-zA-Z0-9]/g;
var res2 = rec.match(r2);
var r3 = /[^a-zA-Z]/g;
var res3 = rec.match(r3);
NB: Par rapport aux caractères spéciaux () ``'' ``'' {[}]$§ etc, pour
rechercher ces genres de caractère il va falloir les échapper avec un
antislash. Valable même en dehors des classes de caractères pour
nombre de classe de caractères spéciaux.
Ex:
<body>
<p>On apprend à utiliser les [regex] en JavaScript en 2016 - ?</p>
<p id="reg"></p>
<script>
var rec = document.querySelector('p').textContent;
var r1 = /\[regex\]/g;
var res1 = rec.match(r1);
var r2 = /[e\[\]]/g;
var res2 = rec.match(r2);
var r3 = /[0-9-]/g;
var res3 = rec.match(r3);
var r4 = /\?$/;
var res4 = rec.match(r4);
Les métacaractères ou classes abrégés, vont être des caractères qui portent
une signification spéciale.La spécificité des métacarctères et qu’ils vont
toujours commencés par un antislash sauf pour le métacaractère (.) point. Ils
vont très souvent correspondre à des classes qui sont couramment utilisés et
vont donc nous servir à écrire ces classes plus rapidement sur des raccourcis
des classes.
La liste des métacaractères les plus utilisés:
META SENS
CARACTÈRE
\w
Trouve toute lettre. Équivalent à [a-zA-Z]
\W
Trouve tout ce qui n’est pas une lettre.
Équivalent à [^a-zA-Z]
\s Trouve un espace
var r1 = /./g;
var res1 = rec.match(r1);
var r2 = /\d/g;
var res2 = rec.match(r2);
var r3 = /\D/g;
var res3 = rec.match(r3);
var r4 = /\br/;
var res4 = r4.test(rec);
var resultat = document.getElementById('reg');
resultat.innerHTML =
'Tout sauf une nouvelle ligne : ' + res1 +
'<br>Tous les chiffres : ' + res2 +
'<br>Tout sauf [0-9] : ' + res3 +
'<br>r en début ou fin de mot ? : ' + res4;
</script>
</body>
Tout sauf une nouvelle ligne : O,n, ,a,p,p,r,e,n,d, ,à, ,u,t,i,l,i,s,e,r, ,l,e,s,
,[,r,e,g,e,x,], ,e,n, ,J,a,v,a,S,c,r,i,p,t, ,e,n, ,2,0,1,6, ,-, ,?
Tout sauf [0-9] : O,n, ,a,p,p,r,e,n,d, ,à, ,u,t,i,l,i,s,e,r, ,l,e,s, ,[,r,e,g,e,x,], ,e,n,
,J,a,v,a,S,c,r,i,p,t, ,e,n, , ,-, ,?
function f_valid(e){
if (prenom.validity.valueMissing) {
e.preventDefault();
prenom_m.textContent = 'Prénom MANQUANT';
prenom_m.style.color = 'red';
}
}
</script>
</body>
Dans cet exemple le formulaire a été bloqué, nous avons bloqué le formulaire
et non le chrome en soi. Nous avons bloqué le formulaire dans notre code
script avec le preventDefault();et un msg rouge s’affiche Prénom manquant
function f_valid(e){
if (prenom.validity.valueMissing) {
e.preventDefault();
prenom_m.textContent = 'Prénom MANQUANT';
prenom_m.style.color = 'red';
}else if (prenom_v.test(prenom.value) == false) {
event.preventDefault();
prenom_m.textContent = 'Format incorrect';
prenom_m.style.color = 'blue';
}else {
}
}
</script>
<script>
var canvas = document.getElementById('canvas1');
var contexte = canvas.getcontext('2d');
contexte.fillStyle = '#0AA';
contexte.fillRect(50, 0, 200, 100);
</script>
</body>
<script>
var canvas = document.getElementById('canvas1');
var contexte = canvas.getContext('2d');
contexte.linewidth = '5';
contexte.strokeStyle = '#0AA';
contexte.strokeRect(50,10, 150, 80);
</script>
</body>
<script>
var canvas = document.getElementById('canvas1');
var contexte = canvas.getContext('2d');
contexte.strokeStyle = '#48C';
contexte.moveTo(20,20);
contexte.lineTo(300,150);
contexte.stroke();
</script>
</body>
<script>
var canvas = document.getElementById('canvas1');
var contexte = canvas.getContext('2d');
contexte.strokeStyle = '#48C';
contexte.moveTo(50,50);
contexte.lineTo(350,150);
contexte.lineTo(50,150);
contexte.lineTo(50,50);
contexte.stroke();
</script>
</body>
contexte.beginPath();
contexte.lineWidth = '5';
contexte.strokeStyle ='#48C';
contexte.moveTo(100,50);
contexte.lineTo(300,150);
contexte.stroke();
contexte.beginPath();
contexte.lineWidth = '5';
contexte.strokeStyle = '#C24';
contexte.moveTo(300,160);
contexte.lineTo(100,160);
contexte.stroke();
contexte.beginPath();
contexte.lineWidth = '5';
contexte.strokeStyle = '#A4A';
contexte.moveTo(100,150);
contexte.lineTo(300,50);
contexte.stroke();
</script>
<script>
var canvas = document.getElementById('canvas1');
var contexte = canvas.getContext('2d');
contexte.beginPath();
contexte.lineWidth = '5';
contexte.strokeStyle = '#4C8';
contexte.arc(75, 100, 50, 0, Math.PI);
contexte.stroke();
contexte.beginPath();
contexte.lineWidth = '5';
contexte.strokeStyle = '#A4A';
contexte.arc(200, 100, 50, 0, 2*Math.PI);
contexte.stroke();
contexte.beginPath();
contexte.lineWidth = '5';
contexte.strokeStyle = '#48C';
contexte.arc(325, 100, 50, Math.PI, 2*Math.PI);
contexte.stroke();
</script>
</body>
#canvas1{
border: 2px solid orange;
}
</style>
</head>
<body>
<canvas id='canvas1' width='400' height='200'></canvas>
<script>
var canvas = document.getElementById('canvas1');
var contexte = canvas.getContext('2d');
lineaire.addColorStop(0, '#4C8');
lineaire.addColorStop(0.5, '#48C');
lineaire.addColorStop(1, '#A4A');
contexte.fillStyle = lineaire;
contexte.fillRect(100, 50, 100, 100);
</script>
</body>
<script>
var canvas = document.getElementById('canvas1');
var contexte = canvas.getContext('2d');
radial.addColorStop(0, '#4C8');
radial.addColorStop(0.25, '#48C');
radial.addColorStop(1, '#A4A');
contexte.beginPath();
contexte.fillStyle = radial;
contexte.arc(200, 100, 75, 0, 2*Math.PI);
contexte.fill();
</script>
</body>
<script>
var canvas = document.getElementById('canvas1');
var contexte = canvas.getContext('2d');
#canvas1{
border: 2px solid orange;
}
#image{
display: none;
}
</style>
</head>
<body>
<img id="image" src="keita.jfif" alt="dessert">
<canvas id='canvas1' width='600' height='400'></canvas>
<script>
var canvas = document.getElementById('canvas1');
var contexte = canvas.getContext('2d');
var image = document.getElementById('image');
image.addEventListener('load', affiche);
function affiche(){
contexte.drawImage(image, 50, 25, 500, 350);
}
</script>
</body>
Incliner Un Dessin:
Pour incliner un dessin dans notre canvas, nous avons besoin de
deux méthodes Rotate et Translate.
La méthode rotate a besoin comme argument la valeur de l’angle
de rotation en radian. Il doit être exécuté avant la création du
dessin.
<style>
#canvas1{
border: 2px solid orange;
}
#image{
display: none;
}
</style>
</head>
<body>
<canvas id='canvas1' width='600' height='400'></canvas>
<script>
var canvas = document.getElementById('canvas1');
var contexte = canvas.getContext('2d');
contexte.fillStyle = '#A8A'
contexte.fillRect(150, 25, 75, 75);
contexte.rotate(Math.PI/9);
contexte.fillStyle = 'RGBa(64,192,128,0.6)';
contexte.fillRect(150, 25, 75, 75);
contexte.rotate(Math.PI/9);
contexte.fillStyle = 'RGBa(192,64,192,0.6)';
contexte.fillRect(150, 25, 75, 75);
</script>
</body>
<script>
var canvas = document.getElementById('canvas1');
var contexte = canvas.getContext('2d');
contexte.fillStyle = '#48A'
contexte.fillRect(10, 10, 75, 75);
contexte.translate(75,75);
contexte.fillStyle ='RGBa(64,192,128)';
contexte.fillRect(10,10,75,75);
</script>
</body>
Autres Exemple:
var canvas = document.getElementById('canvas1');
var contexte = canvas.getContext('2d');
contexte.translate(300,200);
contexte.fillStyle = '#48A'
contexte.fillRect(0, 0, 75, 75);
contexte.rotate(Math.PI/2);
contexte.fillStyle = 'RGBa(64,192,126)';
contexte.fillRect(0,0,75,75);
contexte.rotate(Math.PI/2);
contexte.fillStyle = '#A3A';
contexte.fillRect(0,0,75,75);
contexte.rotate(Math.PI/2);
contexte.fillStyle = '#E85';
contexte.fillRect(0,0,75,75);
Gestion du Délai D’exécution
Le javascript nous permet d'exécuter des blocs de code à un
certain moment donné ou à répétition avec un intervalle de temps
fixe entre chaque répétition. Pour gérer le délai d'exécution d'un
code, on utilise la méthode setInterval() et setTimeout().
La méthode setInterval(),est une méthode window elle va nous
permettre d'exécuter un bloc de code en couple en précisant
l’intervalle de temps dans chaque répétition. Cette méthode va
prendre en argument le bloc de code et l’intervalle en milliseconde.
<body>
<p>Horloge actualisée en direct : Il est <span
id="temps"></span></p>
<button id="stop">Arrêter le temps</button>
<script>
var heure = document.getElementById('temps');
var stop = document.getElementById('stop');
var tempsReel = setInterval(horloge, 1000);
function horloge(){
var d = new Date();
heure.innerHTML = d.toLocaleTimeString();
}
stop.addEventListener('click', arret);
function arret(){
clearInterval(tempsReel);
}
</script>
</body>
btn.addEventListener('click', couleur);
function couleur(){
setTimeout((function(){body.style.backgroundColor =
'#3BA'}), 200);
setTimeout((function(){body.style.backgroundColor =
'#4AB'}), 400);
setTimeout((function(){body.style.backgroundColor =
'#59B'}), 600);
setTimeout((function(){body.style.backgroundColor =
'#66B'}), 800);
setTimeout((function(){body.style.backgroundColor =
'#63B'}), 1000);
setTimeout((function(){body.style.backgroundColor =
'#83A'}), 1200);
setTimeout((function(){body.style.backgroundColor =
'#A3A'}), 1400);
setTimeout((function(){body.style.backgroundColor =
'#A59'}), 1600);
setTimeout((function(){body.style.backgroundColor =
'#A77'}), 1800);
setTimeout((function(){body.style.backgroundColor =
'#995'}), 2000);
}
</script>
</body>
var c = document.cookie;
document.getElementById('cook').innerHTML = c;
</script>
</body>
Pour modifier un cookie, il suffit d’appeler les mêmes noms et de
modifier les valeurs qu’on veut modifier.
<body>
<p id="cook"></p>
<script>
document.cookie = 'prenom1=Pierre; expires=Thu, 17 sept 2021
12:00:00 UTC; path=/';
document.cookie = 'prenom2=Victor; expires=Thu, 17 sept 2021
12:00:00 UTC; path=/';
function lireCookie(nom){
//On recupère le nom du cookie et le signe '='
var nomEtEgal = nom + '=';
//récupère tous les cookies dans u tableau
var cTableau = document.cookie.split(';');
//Parcourt le tableau créé
for(var i=0;i<cTableau.length; i++){
//On récupère tous les noms et valeurs des cookies
var c = cTableau[i];
//On supprime les espaces potentiels dans c jusqu'à
tomber sur le nom d'un cookie
while (c.charAt(0)==' '){
c = c.substring(1, c.length);
}
if (c.indexOf(nomEtEgal) == 0) {
return c.substring(nomEtEgal.length,c.length);
}
}
//Si nom du cookie non trouvé, il n'existe pas
return null
}
function supprimerCookie(nom){
/*On donne le nom du cookie à supprimer, puis on utilise
creerCookie() pour indiquer une date
*d'expiration passée*/
creerCookie(nom,'',-1);
}
//On crée deux cookies
creerCookie('Cookie1','Je suis le premier cookie', 7);
creerCookie('Cookie2','Je suis un autre cookie', 7);
supprimerCookie('Cookie1');
<script>
var b = document.getElementById('test');
b.addEventListener('click', testValeur);
function testValeur(){
var p = document.getElementById('msg');
var x = document.getElementById('nb').value;
try{
if ((isNaN(x)) || (x == '')) {
throw 'vous n\'avez pas rentré de nombre valide';
}
else if ((x < 1) || (x > 10)) {
throw 'Valeur trop grande ou trop petite';
}
else{
msg.innerHTML = 'Nombre Ok';
}
}
catch(e){
msg.innerHTML = e;
}
finally{
document.getElementById('nb').value = '';
}
}
</script>
</body>
Le Mode STRICT
Est un mode qui va contenir un schématique légèrement différent et en
l'occurrence plus strict que le JavaScript normal, on peut activer le mode
strict de JavaScript grâce à l’expression ”use script”. Si on utilise cette
expression à l’intérieur d’une fonction, seul le code à l’intérieur de cette
fonction est exécuté en mode strict tandis que si on utilise cette
expression dans une espace global du script, le mode strict sera
appliqué à tout le script. En effet le mode strict va transformer certaines
syntaxe non recommandé en véritable erreur, par exemple si on déclare
une variable sans préciser le mot clé var en JavaScript normal cette
variable va devenir globale et aucune erreur ne sera
déclenchée.L'intérêt du mode Strict va être de renvoyer une erreur et
d'empêcher l’exécution d’un script dans certain cas ou le JavaScript
normal n'envoyez pas d’erreur et le script pourrait être exécuté
normalement.
Parmis ces cas, il y’a normalement déclaré une variable sans le mot clé
var, le cas où on tente d’assigner une valeur à une variable ou une
propriété qui est en lecture seule, le cas où on tente de supprimer une
variable ou une propriété qui n’est pas supprimable, le cas où on tente
de définir une variable ou une propriété plus d’une fois, le cas où on
tente de dupliquer le nom d’un paramètre et finalement le cas où on
tente d’utiliser un syntaxe optal ou caractère déjà pend.
<body>
<h1>Test use strict en espace global</h1>
<br>
<br>
<p id="varX"></p>
<p id="varY"></p>
<script>
'use strict';
var afficheX = document.getElementById('varX');
var afficheY = document.getElementById('varY');
var x = 5;
y = 10;
afficheX.innerHTML = x;
afficheY.innerHTML = y;
</script>
</body>
<body>
<h2>Le mode strict</h2>
<h1>Test use strict à l'interieur du fonction</h1>
<br>
<br>
<p id="varX"></p>
<p id="varY"></p>
<script>
var afficheX = document.getElementById('varX');
var afficheY = document.getElementById('varY');
function affX(){
'use strict';
var x = 5;
alert(x);
}
function affY(){
'use strict';
y = 10;
alert(y);
}
affX();
affY();
</script>
</body>
CONCLUSION
Mélanger différente notion appris dans cette cours pour créer des
scripts;
Essayer de maîtriser en pratiquant et en se confrontant au difficulté;
Au niveau du bonne pratique, pensons à indenter, à commenter, à bien
organiser pour rendre notre code lisible et plus compréhensible;
Déclarer tous les variables globales en début de script afin d’avoir une
bonne vision sur celle-ci et toutes les variables vont être déclaré par le
mot clé var et doit être initialiser c’est à dire de leur donner une valeur;
De même lorsqu’ on crée une nouvelle objet n’utiliser le mot clé new()
que si c’est strictement nécessaire;
Penser à traiter les erreurs potentiels de notre code et particulièrement à
vérifier les donnés envoyés par les utilisateurs et les vérifiés côté
serveurs (php par exemple);
L’utilisation d’un fichier séparé avec point extension (.js);
Ce cours à traiter les fonctionnalités de bases et principales du
JavaScript;
Parfaire les connaissances acquises et se tenir au courant des nouvelles
tendances en matière de programmation pour devenir un bon
développeurs car ce sont des langage vivants qui évoluent très vite;
Être au courant des nouvelles versions, des nouvelles fonctions ou
fonctions dépréciés;
Se renseigner des librairies JavaScripts: Json, Jquery et Prototype