Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/05/2011, 15h21   #1
Invité de passage
 
Inscription : avril 2011
Messages : 7
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 7
Points : 2
Points : 2
Par défaut setTimeout : erreur incompréhensible !

Bonjour à tous,

je suis peut-être un peu trop fatigué pour coder, mais le code suivant provoque le plantage du script :

Code :
1
2
3
4
5
6
7
8
9
10
11
<SCRIPT language=javascript>
var i=0;
function Timer() {
 
    document.write(i+"<br/>");
    i++;
    setTimeout(Timer(),1000);
}
Timer();
 
</SCRIPT>
La temporisation n'est pas respectée et la fonction Timer est directement appelée, ce qui provoque l'erreur "too much recursion".

Donc : quel est le problème ?


Merci d'avance !
Jilimay est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2011, 15h27   #2
Expert Confirmé
 
Avatar de sekaijin
 
Femme
Urbaniste
Inscription : juillet 2004
Messages : 1 420
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 48
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Urbaniste
Secteur : Santé

Informations forums :
Inscription : juillet 2004
Messages : 1 420
Points : 2 807
Points : 2 807
NE JAMAIS UTILISER
document.write

car ce dernier recharge la page si son chargement est arrivé à son terme
Code html :
1
2
3
4
5
6
7
8
9
10
11
12
<SCRIPT id='ici' language=javascript>
var i=0;
var elementOuAjouterLesBR = document.getElementById('ici');
function Timer() {
 
    elementOuAjouterLesBR.appendChild(document.createTextNode(i));
    elementOuAjouterLesBR.appendChild(document.createElement('br'));
    i++;
    setTimeout(Timer(),1000);
}
setTimeout(Timer(),1000);
</SCRIPT>
sekaijin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2011, 15h41   #3
Invité de passage
 
Inscription : avril 2011
Messages : 7
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 7
Points : 2
Points : 2
Bonjour,

Merci pour ta réponse rapide !

Par contre, dois-je vraiment faire un appendChild sur le bloc javascript ? Peut-être faut-il plutôt créer une div quelconque avec l'id 'ici' ?

Ceci dit dans les deux cas, le problème reste le même. Je suis à peu près sûr que l'erreur est complètement débile, mais n'arrivant pas à y mettre le doigt dessus ...
Jilimay est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2011, 16h14   #4
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 806
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 806
Points : 35 803
Points : 35 803
Code :
setTimeout(Timer(),1000);

C'est une référence à la fonction qu'il faut passer en paramètre, toi tu passes le résultat de l'exécution de la fonction.
Code :
setTimeout(Timer,1000);
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2011, 16h18   #5
Invité de passage
 
Inscription : avril 2011
Messages : 7
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 7
Points : 2
Points : 2
Merveilleux ! Merci beaucoup !
Jilimay est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2011, 18h22   #6
Expert Confirmé
 
Avatar de sekaijin
 
Femme
Urbaniste
Inscription : juillet 2004
Messages : 1 420
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 48
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Urbaniste
Secteur : Santé

Informations forums :
Inscription : juillet 2004
Messages : 1 420
Points : 2 807
Points : 2 807
tu fais l'append sur ce que tu veux
et bien vu
j'avais laissé passé le timer() à la place de timer

A+JYT
sekaijin est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h45.


 
 
 
 
Partenaires

Hébergement Web