Fonction sous-programme, ensemble d'instructions cachées derrière un nom
// prompt() : affiche une chaîne de caractères
// dans une fenêtre modale avec un champs de texte,
// renvoie le texte écrit par l'utilisateur
let nom = prompt("Votre nom ?")
// alert() : affiche une chaîne de caractères
// dans une fenêtre modale, ne renvoie rien
alert(`Vous êtes ${nom}`)
Une fonction peut avoir des paramètres (entre les parenthèses) et rendre une valeur
On peut faire nos propres fonctions avec deux nouveaux mots-clés de JavaScript :
function
introduit le nom de la fonction et ses paramètres
return
la valeur renvoyée. Marque la fin de la fonction
// déclaration de la fonction
function coucou() {
console.log("Votre ordinateur vous fait coucou")
}
// appel de la fonction
coucou()
Attention : fonction en français, function
en anglais
// déclaration de la fonction
// nom est un paramètre (variable externe)
function coucou(nom) {
console.log(`${nom}, votre ordinateur vous fait coucou`)
}
// appel de la fonction avec 1 paramètre
coucou("Thomas")
let nom = "Élodie"
coucou(nom)
// déclaration de la fonction
// nom et dispositif sont deux paramètres
function coucou(nom, dispositif) {
console.log(`${nom}, votre ${dispositif} vous fait coucou`)
}
// appel de la fonction avec deux paramètres
coucou("Thomas", "ordinateur")
let nom = "Élodie"
coucou(nom, "ordiphone")
Les paramètres permettent de faire varier les données de la fonction (mais pas son code)
// déclaration de la fonction
// elle renvoie une chaîne de caractères
function coucou(nom, dispositif) {
// les variables déclarées dans une fonction
// n'existent qu'à son intérieur
let message
if (dispositif === "fax") {
message = "blip blip tchiiiip"
} else {
message = `${nom}, votre ${dispositif} vous fait coucou`
}
return message
}
// l'appel de la fonction donne une valeur
alert(coucou("Thomas", "ordinateur"))
Une fonction avec return
marche comme une variable. On peut :
Une fonction sans return
sert à modifier les données d'un programme
Certains types de variables ont leur propres fonctions : elles s'appellent méthodes
let saisons = ["hiver", "printemps", "été"]
// méthode push() : ajouter une valeur au tableau
saisons.push("automne")
let ville = "Carry-le-Rouet"
// méthode toLowerCase() : renvoie la même chaîne de caractères
// mais toute en minuscules
console.log(ville.toLowerCase())
On écrit :
variable.methode(param1, param2)
Certains types de variables ont leur propres variables : elles s'appellent attributs
let saisons = ["hiver", "printemps", "été", "automne"]
// attribut length : taille du tableau
console.log(`Il y a ${saisons.length} saisons`)
let commune = "Saint-Remy-en-Bouzemont-Saint-Genest-et-Isson"
// attribut length : longueur de la chaîne de caractères
console.log(`Nombre maximum de caractères : ${commune.length}`)
On écrit :
variable.attribut
Un attribut est lui-même une variable : on peut le lire et parfois le modifier
Deux méthodes et attributs à connaître :
document.querySelector()
renvoie un élément HTML
document.querySelectorAll()
renvoie un tableau avec des éléments HTML
textContent
texte à l'intérieur d'un élément HTML
innerHTML
code HTML à l'intérieur d'un élément HTML
See the Pen Untitled by Aldo Gonzalez-Lorenzo (@aldogl) on CodePen.
querySelector()
et querySelectorAll()
prennent en paramètre une chaîne de caractères avec un sélecteur CSS
document.querySelector("h1") // le premier élément <h1>
document.querySelectorAll(".info") // tous les éléments avec la classe « info »
document.querySelector("#output") // l'élément avec l'id « output »
Nous allons faire des fonctions pour réagir aux événements
Événement action d'un utilisateur sur un élément HTML (ou le navigateur web)
See the Pen Evenements by Aldo Gonzalez-Lorenzo (@aldogl) on CodePen.
Dans une page web, on veut faire X quand l'utilisateur fait Y sur Z
btn.addEventListener('click', montrerClics)
Trois étapes :
document.querySelector()
addEventListener()
Quelques événements :
click
clic de la souris
focus
sélectionner un champs dans un formulaire
blur
désélectionner un champs dans un formulaire
submit
soumettre un formulaire
See the Pen clic by Aldo Gonzalez-Lorenzo (@aldogl) on CodePen.
See the Pen focus/blur by Aldo Gonzalez-Lorenzo (@aldogl) on CodePen.
Pour retrouver directement l'élément qui déclenche l'événement :
event
dans la fonctionevent.target
Indispensable quand on définit un événement pour plusieurs éléments
See the Pen submit by Aldo Gonzalez-Lorenzo (@aldogl) on CodePen.
Utile pour valider un formulaire
Quelle option est la correcte ?
let btn = document.querySelector("button")
// btn.addEventListener("click", coucou()) (1)
// btn.addEventListener("click", coucou) (2)
// btn.addEventListener("click", "coucou") (3)
function coucou() {
let el = document.querySelector("p")
el.textContent = "Coucou"
}
Mais comment modifier une page suite à un événement ?
DOM = représentation du code HTML sous forme d'arbre.
Les éléments du DOM sont les nœuds, qui ont deux types : élément HTML ou texte.
Relations : enfant, descendant, parent, ancêtre, frères et sœurs (siblings).
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>Exemple de DOM</title>
</head>
<body>
<section>
<img src="arbre.png" alt="Un arbre dans une forêt">
<p>
Voici un lien vers <a href="https://developer.mozilla.org/fr/">MDN</a>
</p>
</section>
</body>
</html>
Chaque élément HTML est une variable avec des méthodes (fonctions) et attributs (variables).
Elles permettent de modifier le DOM ⇒ la structure et le contenu de la page
On peut
See the Pen Navigation DOM by Aldo Gonzalez-Lorenzo (@aldogl) on CodePen.
See the Pen Ajouter élément by Aldo Gonzalez-Lorenzo (@aldogl) on CodePen.
document.createElement()
textContent
appendChild()
Cas particulier : l'élément HTML contient un autre élément HTML
See the Pen Texte et éléments by Aldo Gonzalez-Lorenzo (@aldogl) on CodePen.
On peut écrire directement le code HTML à l'intérieur d'un élément avec l'attribut innerHTML
Il marche comme textContent
, mais il permet d'ajouter du code HTML
See the Pen Modifier élément by Aldo Gonzalez-Lorenzo (@aldogl) on CodePen.
textContent
setAttribute(nom, valeur)
removeAttribute(nom)
Cas particulier : modifier les classes
See the Pen Modifier classes by Aldo Gonzalez-Lorenzo (@aldogl) on CodePen.
classList.add()
classList.remove()
Cas particulier : modifier le style
See the Pen setProperty by Aldo Gonzalez-Lorenzo (@aldogl) on CodePen.
Ajouter une propriété CSS avec la méthode style.setProperty(propriété, valeur)
, où
propriété
: propriété CSSvaleur
: valeur de la propriétéSi beaucoup de propriétés à modifier, il vaut mieux utiliser une classe
See the Pen Supprimer élément by Aldo Gonzalez-Lorenzo (@aldogl) on CodePen.
See the Pen Remplir page by Aldo Gonzalez-Lorenzo (@aldogl) on CodePen.