Premiers pas en JavaScript
21.3 autres évènements
cuy copyleft
  See You Why?  

 


Autres évènements en JavaScript (22.1) | | Exercices sur les évènements (22.8)

Contenu


JavaScript 1 - Introduction
JavaScript 2 - Commentaires et instructions
JavaScript 3 - Variables
JavaScript 4 - Types de variables
JavaScript 5 - Variables et chaines
JavaScript 6 - Les fonctions
JavaScript 7 - Les fonctions à paramètre unique
JavaScript 8 - Les fonctions à paramètres multiples
JavaScript 9 - L'instruction RETURN dans une fonction
JavaScript 10 - Appel d'une fonction dans une autre fonction
JavaScript 11 - Les variables locales ou globales
JavaScript 12 - Quelques opérateurs mathématiques
JavaScript 13 - ???
JavaScript 14 - L'instruction IF, pour les conditions
JavaScript 15 - L'instruction IF... ELSE..., pour les conditions à deux sorties
JavaScript 16 - Les IF imbriqués et fonction aléatoire
JavaScript 17 - Les conditions complexes
JavaScript 18 - L'instruction SWITCH, en cas de choix multiples
JavaScript 19 - La boucle FOR
JavaScript 20 - La boucle WHILE
JavaScript 21 - Les événements dans la programmation
JavaScript 22 - Quelques événements : onMouseOver onLoad etc.
22.1 JS : Exemples d'évènements gérés par JS
22.8 JS : exercices sur qq évènements
22.9 JS : un test sur qq évènements
JavaScript 23 - Les objets
JavaScript 24 - Créer ses propres objets
JavaScript 25 - Appliquer des méthodes à ses objets
JavaScript 26 - Les tableaux
JavaScript 27 - Différentes façons de créer des tableaux
JavaScript 28 - Propriétés et méthodes applicables aux tableaux
JavaScript 29 - Les méthodes applicables aux tableaux
JavaScript 30 - Méthodes de tris pour tableaux SORT, REVERSE et PUSH
JavaScript 31 - Ajouter des éléments à un tableau en utilisant une boucle
JavaScript 32 - Tecnique pour imprimer les éléments d'un tableau
JavaScript 33 - Lecture de bases de données
JavaScript 34 - Les objets mathématiques
JavaScript 35 - Les objets relatifs aux dates
JavaScript 36 - Les formulaires JS sont des objets
JavaScript 37 - Accès aux éléments d'un formulaire
JavaScript 38 - Validation des entrées d un formulaire
JavaScript 39 - Graphisme et JavaScript

JavaScript 50 - Calculateur d'emprunt
JavaScript 51 - Calendrier perpétuel et options diverses
JavaScript 99 - Documentation


 
 

 
Avec un peu de JavaScript,
n'oubliez pas de rendre vos pages
plus dynamiques et plus interactives.
 

 
 

 
Notre volonté est de rendre cette formation de JavaScript,
disponible le plus rapidement possible.
Le lecteur excusera l'imperfection de ce travail en cours de construction
et pourrait nous informer des défauts rencontrés.

  MERCI
 

 

 

I. Évènements ou événements en JavaScript

voir < < < Section précédente

 

II. Évènements onClick sur un bouton

voir < < < Section précédente

 

III. Autres évènements

Comme signalé en début de ce chapitre, les événements peuvent être nombreux et JS vous permettra de réagir correctement.

 

 

A. Exemple : onMouseOver sur une image

Il n'est pas rare de voir sur des sites des images qui change si l'internaute survole avec sa souris l'une d'elles.

Personne n'ignore plus la manière d'afficher une image :

<img src="../thumbnails/interr7.jpg">,

ce qui affiche :

Pour l'instant, rien d'exceptionnel. On peut balader sa souris sur cette image, rien ne se produit. Alors que si l'on passe avec sa souris sur la même image ci-dessous, on constate que l'image change...
Essayez, vous verrez... comme elle se décolore subitement... pas de mystère, au début du chapitre, nous avons parlé d'un évènement détectable par 'onMouseOver', qui se déclenche lorsque l'utilisateur place le pointeur de la souris sur un lien ou tout autre élément ou objet (ici l'image).

<img onMouseOver="" src="../thumbnails/interr7.jpg">, est la manière d'appeler une action (fonction ou méthode) en JS, qui se notera entre les guilles (voir en rouge ci-dessus). Et, comme la seule action est de faire appel à une nouvelle adresse d'une nouvelle image, on devrait noter src="../thumbnails/interr5.jpg" entre ces guilles. Imaginez la tête de votre navigateur qui doit lire ceci :
<img onMouseOver="src="../thumbnails/interr5.jpg"" src="../thumbnails/interr7.jpg"> ; nous, nous vous avons aidé en utilisant des couleurs, mais vous savez qu'un éditeur de texte ne distingue pas les couleurs, tout au plus les meilleurs mettent-ils eux-mêmes en couleurs selon la syntaxe qu'ils reconnaissent... mais, après avoir ouvert les guilles (notées en rouge chez nous), comment votre éditeur trouvera-t-il les guilles fermantes parmi les 5 qui suivent ?

Vous connaissez la réponse... si vous avez tout lu. Dans notre séquence relative aux 'variables chaine ou string', on s'était interrogé concernant la difficulté d'introduire entre guilles un texte qui comprend lui-même des guillemets. La réponse était : remplacer les guillemets intérieurs par un simple quote ou apostrophe... mais ce caractère a aussi un sens particulier en JS, d'où le danger de générer des erreurs dans certains cas de multiples imbrications de guillemets et quotes (avec un exemple extrait de la programmation du menu apparaissant sur la majorité des pages de ce site CUY) :
zlien[z][i]= '<a href = ' + sitemlinks[z][i] + ' class=ejsmenu title="'+ sitemcomm[z][i] +'">' + sitems[z][i] +'</a>';
Je peux donc utiliser de simples quotes en lieu et place des guillemets (doubles quotes)... mais je dois veiller à ne pas les mélanger...

Nous savons donc qu'il faudra écrire : <img onMouseOver="src='../thumbnails/interr5.jpg'" src="../thumbnails/interr7.jpg">, ainsi plus de confusion... sauf que JS lira une nouvelle image, mais il ne saura pas ce qu'il doit en faire... la solution est d'ajouter le mot clé "this." devant le src='...', sans oublier le point (qui doit séparer l'objet de la méthode qu'on lui applique).
Nous essaierons de limiter notre explication en disant qu'en JavaScript this. se rapporte toujours à l'objet propriétaire de la fonction que nous exécutons, ou plus précisément, à l'objet dont la fonction est une méthode. Ici, l'objet auquel on impose une nouvelle source est l'image interr7.jpg et la méthode à lui appliquer est src. Notre image, accompagnée de son détecteur d'évènement, se notera donc <img onMouseOver="this.src='../thumbnails/interr5.jpg'" src="../thumbnails/interr7.jpg">. Nous reviendrons sur ce mot clé this. lorsque nous traiterons des objets.

Les guillemets ouvrantes de mon instruction ne pourront plus être confondues avec les guillemets fermants de l'instruction onMouseOver... et le this. indique que la nouvelle source de l'image interr7.jpg est interr5.jpg maintenant.

Malheureusement, si vous avez aperçu le changement, vous aurez peut-être regretté qu'elle ne reprenne pas son allure d'origine en la quittant... vos désirs seront des ordres pour moi, il suffisait de me le dire.
En écrivant onMouseOver, on signalait "quand la souris passe sur..." ; pour signaler "quand la souris quitte...", on écrira onMouseOut.

D'où l'instruction finalisée à écrire :

<img onMouseOver="this.src='../thumbnails/interr5.jpg'" onMouseOut="this.src='../thumbnails/interr7.jpg'" src="../thumbnails/interr7.jpg">

Ouf ! Voilà notre image revenue... dès que l'on quitte l'image d'origine, mais le lecteur attentif aura compris qu'il est possible d'y faire réapparaitre une troisième image... à vous d'essayer... et puis non, c'est si vite fait, essayez ici... vous serez surpris du résultat.

Le lecteur aura donc compris que les images doivent être de même dimension pour éviter les désagréments de lecture dus au déplacement de texte.

À moins que vous ne placiez vos images dans un tableau (invisible, donc border='0'), de dimensions minimales qui soient les maximums des hauteurs et largeurs de vos images, comme ici. Ici, mon cadre de dimension 98x153 contient facilement mes images qui mesurent respectivement 91x149 et 64x96.

 

 

B. Exemple : onMouseOver et Out sur les cellules d'un tableau

L'évènement onMouseOver est probablement un des plus fréquents lorsqu'il s'agit de détecter un déplacement de la souris sur une zone. Notre propos ici sera de modifier le fond de la cellule si la souris survole cette cellule.

Tout le monde se rappellera des instructions HTML pour construire un tableau :
- les balises qui encadrent le tout : <table>...</table> ;
- autant de paires de balises <tr>...</tr> qu'il n'y aura de lignes dans votre tableau ;
- pour chaque ligne de tableau, autant de paires <td>...</td> qu'il n'y aura de colonnes ;
sans oublier que des paramètres 'colspan' et 'rowspan' peuvent étendre certaines cellules sur plusieurs colonnes ou lignes.

Les détecteurs d'évènements onMouseOver et onMouseOut détecteront si la souris les survole ou non. En cas de survol, ce script changera la teinte de fond en une couleur plus rougeâtre (voir couleurs en HTML, et le F initial dans les chaines RRVVBB "#F0A0A0"). On pourrait donc écrire :

<table width="90%" border="1" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td id="1" bgColor="#EEEEEE" onMouseOver="this.bgColor='#F0C0C0'" onMouseOut="this.bgColor='#EEEEEE'">un</td>
    <td id="2" bgColor="#FFFFFF" onMouseOver="this.bgColor='#F0D0D0'" onMouseOut="this.bgColor='#FFFFFF'">deux</td>
    <td id="3" bgColor="#EEEEEE" onMouseOver="this.bgColor='#F0C0C0'" onMouseOut="this.bgColor='#EEEEEE'">trois</td>
    <td id="4" bgColor="#FFFFFF" onMouseOver="this.bgColor='#F0D0D0'" onMouseOut="this.bgColor='#FFFFFF'">quatre</td>
    <td id="5" bgColor="#EEEEEE" onMouseOver="this.bgColor='#F0C0C0'" onMouseOut="this.bgColor='#EEEEEE'">cinq</td>
  </tr>
  <tr>
    <td id="6" bgColor="#CCCCCC" onMouseOver="this.bgColor='#F0A0A0'" onMouseOut="this.bgColor='#CCCCCC'">six</td>
    <td id="7" bgColor="#DDDDDD" onMouseOver="this.bgColor='#F0B0B0'" onMouseOut="this.bgColor='#DDDDDD'">sept</td>
    <td id="8" bgColor="#CCCCCC" onMouseOver="this.bgColor='#F0A0A0'" onMouseOut="this.bgColor='#
CCCCCC'">huit</td>
    <td id="9" bgColor="#DDDDDD" onMouseOver="this.bgColor='#F0B0B0'" onMouseOut="this.bgColor='#DDDDDD'">neuf</td>
    <td id="10" bgColor="#CCCCCC" onMouseOver="this.bgColor='#F0A0A0'" onMouseOut="this.bgColor='#CCCCCC'">dix</td>
  </tr>
</table>

Ce qui donnerait :

un deux trois quatre cinq
six sept huit neuf dix

Le lecteur attentif aura observé que les 'id' étaient inutiles ici, mais notés pour pouvoir distinguer chaque cellule du tableau. Par contre, la coloration différente pour les lignes et les colonnes pourrait être très utile pour la lecture de grands tableaux.

 

 

 

C. Capitaliser un champ avec un onBlur

Ils se peut que vous ne souhaitiez retenir les noms des visiteurs de vos pages qu'en n'utilisant que des capitales (souvent appelées à tort majuscules [voir ici]). Dans un formulaire que l'on baptisera form_id on emploiera un 'input' de type 'text' que l'on baptisera ch_nom comme les autres champs utiles à l'identification. Dès que l'internaute aura répondu et passera à l'élément suivant, il quittera le champ ch_nom, on dit aussi que le champ perdra le focus, ce qui activera le détecteur d'évènement onBlur. On écrira :

<form name="form_id" method="post" action="...">
   <input type="text" name="ch_nom" value="Votre NOM svp" onBlur="change_capitale();">
   <input type="text" name="ch_prenom" value="Votre prénom svp">
   <input type="submit" value="Soumettre">
</form>
 

Ce qui signifie bien que dès que l'on quitte le champ ch_nom, onBlur appellera une fonction change_capitale() qu'il nous faudra encore définir. Cette définition devra être faite AVANT la création du formulaire... donc, plus haut dans la source on prévoira la fonction.

<script type="text/javascript">
 function change_capitale() {
   document.formul_id.ch_nom.value=document.formul_id.ch_nom.value.toLowerCase();
 }
</script>
 

Par précaution, on pourrait même prévoir que dès l'ouverture de la page, le champ ch_nom reçoive le focus, c'est à dire que le curseur soit activé pour répondre immédiatement. On pourrait dans ce cas écrire : <body onLoad="formul_id.ch_nom.focus();">.

 

VIII. Exercices relatifs aux évènements

voir suite >>>

 

 

IX. Test relatifs à l'évènement onClick

voir suite >>>

 

 


Autres évènements en JavaScript (22.1) | | Exercices sur les évènements (22.8)