Onclick à remplacer par addEventListener

Pour toutes les discussions javascript, jQuery et autres frameworks
Avatar du membre
Frosty
Messages : 82
Enregistré le : 20 juil. 2017, 13:23
Localisation : Grenoble

Re: Onclick à remplacer par addEventListener

Message par Frosty » 26 août 2017, 17:32

Alors pour ton exercice :

- Dans la console ça m'affichait "cannot access property 'value' of undefined" pour cette ligne :

Code : Tout sélectionner

var demarre = document.getElementById('demarre').value;
Tout simplement car le champ "demarre" n'est pas connu par l'interpréteur Javascript tant que la page n'est pas complètement chargée
Il faut donc mettre tout le code entre

Code : Tout sélectionner

window.addEventListener("load",function(){ ... }
et pas seulement la fin

- Il y avait un souci avec cette ligne, setTimeout("chrono()", 100) n'était pas Ok (+ message dans la console, pas super explicite par contre), là je dois avouer que j'ai pas trop compris pourquoi car c'est censé fonctionner (cf. http://www.toutjavascript.com/reference ... imeout.php)

Bref, en mettant direct le nom de la fonction sans guillemets ni parenthèses (cf. cet autre exemple https://www.w3schools.com/jsref/met_win_settimeout.asp) c'est passé :

Code : Tout sélectionner

compte=setTimeout(chrono,100) //la fonction est relancée
=> A partir de là, le script tourne, à part qu'il y a un seul chiffre pour chaque champ heure/minute/seconde au lieu de 2 dès qu'on clique sur "Start", et que si on clique 2 fois sur "Start", le chronomètre... va 2 fois plus vite :mrgreen: cela dit ce n'est peut être pas le sujet de l'exercice

Bon courage

moon136
Messages : 51
Enregistré le : 12 août 2017, 15:00

Re: Onclick à remplacer par addEventListener

Message par moon136 » 26 août 2017, 18:07

Frosty a écrit :
26 août 2017, 17:32
Alors pour ton exercice :

- Dans la console ça m'affichait "cannot access property 'value' of undefined" pour cette ligne :

Code : Tout sélectionner

var demarre = document.getElementById('demarre').value;
Tout simplement car le champ "demarre" n'est pas connu par l'interpréteur Javascript tant que la page n'est pas complètement chargée
Il faut donc mettre tout le code entre

Code : Tout sélectionner

window.addEventListener("load",function(){ ... }
et pas seulement la fin

- Il y avait un souci avec cette ligne, setTimeout("chrono()", 100) n'était pas Ok (+ message dans la console, pas super explicite par contre), là je dois avouer que j'ai pas trop compris pourquoi car c'est censé fonctionner (cf. http://www.toutjavascript.com/reference ... imeout.php)

Bref, en mettant direct le nom de la fonction sans guillemets ni parenthèses (cf. cet autre exemple https://www.w3schools.com/jsref/met_win_settimeout.asp) c'est passé :

Code : Tout sélectionner

compte=setTimeout(chrono,100) //la fonction est relancée
=> A partir de là, le script tourne, à part qu'il y a un seul chiffre pour chaque champ heure/minute/seconde au lieu de 2 dès qu'on clique sur "Start", et que si on clique 2 fois sur "Start", le chronomètre... va 2 fois plus vite :mrgreen: cela dit ce n'est peut être pas le sujet de l'exercice

Bon courage

merci bcp pr ta reponse mais jai pas compris pour le debut avec demarre je mes mon code comment? il manque un mot a ta phrase jai pas compris dsl. pour settimeout ok jai compris ;)

Avatar du membre
Frosty
Messages : 82
Enregistré le : 20 juil. 2017, 13:23
Localisation : Grenoble

Re: Onclick à remplacer par addEventListener

Message par Frosty » 26 août 2017, 20:04

En fait le mot manquant est la ligne de code que j'ai mis en dessous.
Ça permet d'exécuter le code une fois la page et ses éléments chargés et donc visibles par l'interpréteur JavaScript.

moon136
Messages : 51
Enregistré le : 12 août 2017, 15:00

Re: Onclick à remplacer par addEventListener

Message par moon136 » 26 août 2017, 22:48

Frosty a écrit :
26 août 2017, 20:04
En fait le mot manquant est la ligne de code que j'ai mis en dessous.
Ça permet d'exécuter le code une fois la page et ses éléments chargés et donc visibles par l'interpréteur JavaScript.
Un Grand merci Frosty , tu m'a encore beaucoup aidé ;)

Répondre