JavaScript est un langage de programmation de scripts orienté objet qui est utilisable dans les navigateurs actuels car ceux-ci intègre un interpréteur JavaScript.
Le code javascript s'inclut directement dans la page Web (ou dans un fichier externe) et permet de dynamiser une page HTML, en ajoutant des interactions avec l'utilisateur, des animations, de l'aide à la navigation, etc.
JavaScript est un langage dit client-side, c'est-à-dire que les scripts sont exécutés par le navigateur de l'internaute (le client). Cela diffère des langages de scripts dits server-side qui sont exécutés par le serveur Web comme le langage PHP.
Tous les navigateurs récents proposent des outils de développement qui permettent d'écrire et de tester votre code javascript.
Il y a 2 manières d'inclure du code javacsript dans une page HTML :
<!DOCTYPE html> <html> <head> <title>Hello World!</title> </head> <body> <script> alert('Hello world!'); </script> <script src="voirure.js"></script> </body> </html>
La page de la voiture va être modifiée afin d'afficher les flèches de direction si les cases à cocher sont activées.
Dans le dossier du projet, créez un dossier images et mettez dans ce dossier les quatre images suivantes :
- - - - - - -
L'utilisation de bloc HTML <div> va permettre de placer le tableau de flèches à droite des cases à cocher :
<fieldset> <legend>Cochez les flèches à activer :</legend> <div id="casefleches"> <input type="checkbox" name="flecheAvancer" id="flecheAvancer" /> <label for="flecheAvancer">Avancer</label><br /> <input type="checkbox" name="flecheReculer" id="flecheReculer" /> <label for="flecheReculer">Reculer</label><br /> <input type="checkbox" name="flecheDroite" id="flecheDroite" /> <label for="flecheDroite">Droite</label><br /> <input type="checkbox" name="flecheGauche" id="flecheGauche" /> <label for="flecheGauche">Gauche</label> </div> <div id="imafleches"> <table> <tr> <td></td> <td><img id="imgflecheAvancer" src="imgflecheavancer.png" /></td> <td></td> </tr> </tr> <td><img id="imgflecheGauche" src="imgflechegauche.png" /></td> <td></td> <td><img id="imgflecheDroite" src="imgflechedroite.png" /></td> </tr> <tr> <td></td> <td><img id="imgflecheReculer" src="imgflechereculer.png" /></td> <td></td> </tr> </div> </fieldset>
Explications :
#casefleches { float:left; }
Voici le résultat à obtenir :
<script type="text/javascript" src="voiture.js"></script>
Au lancement de la page les images ne doivent pas être affichées. Pour cela le script doit :
Le script javascritp du fichier voiture.js va contenir les instructions suivantes :
// affichage des fleches blanches var imgFlecheAvancer = document.getElementById('imgFlecheAvancer'); imgFlecheAvancer.setAttribute('src', 'fleche-blanche-portrait.png'); var imgFlecheReculer = document.getElementById('imgFlecheReculer'); imgFlecheReculer.setAttribute('src', 'fleche-blanche-portrait.png'); var imgFlecheDroite = document.getElementById('imgFlecheDroite'); imgFlecheDroite.setAttribute('src', 'fleche-blanche-paysage.png'); var imgFlechegGauche = document.getElementById('imgFlecheGauche'); imgFlecheGauche.setAttribute('src', 'fleche-blanche-paysage.png');
Explications :
Pour afficher la bonne image d'une flèche en fonction de l'activation d'une case à cocher il faut :
Voici une liste de quelques événements principaux ainsi que les actions qui les déclenchent :
Nom de l'événement | Action pour le déclencher |
---|---|
click | Cliquer (appuyer puis relâcher) avec la souris sur l'élément |
dblclick | Double-cliquer sur l'élément |
mouseover | Survoler avec la souris l'élément |
mouseout | Faire sortir le curseur de l'élément |
mousedown | Appuyer (sans relâcher) sur le bouton gauche de la souris sur l'élément |
mouseup | Relâcher le bouton gauche de la souris sur l'élément |
mousemove | Faire déplacer le curseur sur l'élément |
keydown | Appuyer (sans relâcher) sur une touche de clavier sur l'élément |
keyup | Relâcher une touche de clavier sur l'élément |
keypress | Frapper (appuyer puis relâcher) une touche de clavier sur l'élément |
focus | Cibler l'élément |
blur | Annuler le « ciblage » de l'élément |
change | Changer la valeur d'un élément spécifique aux formulaires (input,checkbox, etc.) |
select | Sélectionner le contenu d'un champ de texte (input,textarea, etc.) |
// Ajout des gestionnaires d'événement clic de souris sur les cases à cocher var flecheReculer = document.getElementById('flechereculer') flecheAvancer.addEventListener('change',afficheImageAvancer); var flecheReculer = document.getElementById('flechereculer') flecheReculer.addEventListener('change', afficheImageReculer); var flecheDroite = document.getElementById('flechedroite') flecheDroite.addEventListener('change', afficheImageDroite); var flecheGauche = document.getElementById('flechegauche') flecheGauche.addEventListener('change', afficheImageGauche); function afficheImageAvancer() { alert('id ' + this.id + 'est : ' + this.checked) if (this.checked) { imgFlecheAvancer.setAttribute('src', 'imgflecheavancer.png'); } else { imgFlecheAvancer.setAttribute('src', 'fleche-blanche-portrait.png'); } }
Explication :
Pour cela, la fonction est indiquée SANS PARENTHESE afin de ne pas l'exécuter mais uniquement la référencer.
Il peut être intéressant d'afficher une information textuelle comme la vitesse du moteur. Pour cela :
<td><img id="imgflecheGauche" src="images/imgflecheGauche.png" /></td> <td><span id="afficheVitesse"></span></td> <td><img id="imgflecheDroite" src="images/imgflecheDroite.png" /></td> </tr>
var afficheVitesse = document.getElementById('afficheVitesse');
function afficheImageAvancer() { if (this.checked) { imgflecheAvancer.setAttribute('src', 'images/imgflecheAvancer.png'); afficheVitesse.innerHTML = document.getElementById('vitesse1').value; } else { imgflecheAvancer.setAttribute('src', 'images/fleche-blanche-portrait.png'); afficheVitesse.innerHTML = ""; }
Explications :
Le code complet de la page : index.html.pdf
Voici une ressource parmi d'autres pour découvrir Javascript :