IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

setTimeout : erreur incompréhensible !


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Inscrit en
    Avril 2011
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 7
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 !

  2. #2
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    NE JAMAIS UTILISER
    document.write

    car ce dernier recharge la page si son chargement est arrivé à son terme
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    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>

  3. #3
    Membre du Club
    Inscrit en
    Avril 2011
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 7
    Par défaut
    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 ...

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    setTimeout(Timer,1000);
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, 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
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Membre du Club
    Inscrit en
    Avril 2011
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 7
    Par défaut
    Merveilleux ! Merci beaucoup !

  6. #6
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    tu fais l'append sur ce que tu veux
    et bien vu
    j'avais laissé passé le timer() à la place de timer

    A+JYT

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur incompréhensible
    Par Progs dans le forum C++
    Réponses: 13
    Dernier message: 21/06/2005, 14h59
  2. [2.1][jdk1.3][Junit] Erreur incompréhensible!
    Par Sniper37 dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 29/04/2005, 19h03
  3. Erreur incompréhensible à la ligne 200 (sur 190 ?!)
    Par transistor49 dans le forum Qt
    Réponses: 3
    Dernier message: 22/03/2005, 23h09
  4. [Fichiers] Erreur incompréhensible
    Par Clorish dans le forum Langage
    Réponses: 5
    Dernier message: 14/12/2004, 17h18
  5. [JSP] Erreur incompréhensible
    Par xxaragornxx dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 09/09/2003, 16h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo