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(); en javascript


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Directeur technique
    Inscrit en
    Juillet 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 31
    Par défaut SETTIMEOUT(); en javascript
    Slt à tous,

    J'ai un petit problème avec une fonction "compte a rebour" :

    Entre HEAD et \HEAD j'ai mit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <SCRIPT LANGUAGE="JavaScript">
    	 function compte_a_rebour(temps){
    	 var i=0;
    	 for (i = 0, i<temps, i++)
    	 {
    	  window.setTimeout("document.getElementById('temps').innerHTML='"+i+"';",i+"000")
    	 }
    	 }
         </script>
    Et dans ma page il y a :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <body onLoad="compte_a_rebour('30');">
     
    <div id="temps"></div>
    Je comprends pas : le temps ne s'affiche pas dynamiquement, j'ai peut être fais des erreurs de syntaxe ( le javascript je m y fais pas ).

    Merci de me répondre au plus vite ^^

  2. #2
    Membre émérite Avatar de sharrascript
    Homme Profil pro
    Développeur Web indépendant
    Inscrit en
    Avril 2007
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web indépendant

    Informations forums :
    Inscription : Avril 2007
    Messages : 678
    Par défaut
    bonsoir,

    Bon voici un petit code tapé à la volé, je sais pas si c'est ce que tu souhaitais faire:

    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= 30;
    function compte_a_rebour(){
    	i--;
    	if (i <= 0){
    		clearsetInterval(tempo);
    	}
    	document.getElementById("temps").innerHTML= i+";";
    }
    tempo= setInterval('compte_a_rebour()',2000);
    </SCRIPT>
    Bizarrement, si tu passe en dessus des 2000 c'est pas terrible.

    Bon, c'est juste un petit compte à rebour, je sais pas si c'est ce que tu souhaitais.

    A savoir que .setTimeout retardera l'effet d'une fonction à tant de millisecondes, setInterval agira toutes les X millisecondes

    Voilà ++

  3. #3
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  4. #4
    Membre averti
    Homme Profil pro
    Directeur technique
    Inscrit en
    Juillet 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 31
    Par défaut
    Merci bcp ^^

  5. #5
    Membre chevronné
    Inscrit en
    Novembre 2006
    Messages
    336
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 336
    Par défaut
    On ne passe PAS de string à setTimeout, on lui passe une référence à une fonction ou au pire une fonction anonyme

    @Cruzty : Ton code qui est censé corrigé des erreurs en amène pas mal d'autres :

    -Tu ne déclare pas i, donc tu crèes une variable globale.
    -Tu passe une string à setTimeout est c'est mauvais
    -Tu utilises deux fois le mot temps pour deux élements totalement différents
    -Tu appelles x fois la fonction document.getElementById pour faire une action sur le même element ( )
    -Tu appelles window.setTimeout ce qui est totalement inutile puisque la méthode setTimeout fais partie du namespace global.
    -Accessoirement (-1*i)+temps et i*-1+temps font exactement la même chose, règle élementaire d'arithémétique. D'ailleurs cette deuxième écriture est autrement plus claire.

    ET NOM D'UNE PIPE, on n'utilise PAS l'attribut language pour un script javascript;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script type="text/javascript"></script>

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 7
    Par défaut
    J'ai simplement corrigé son code. Si j'avais a faire un compte a rebours, il est certain que je ne ferai absolument pas comme ca, en balancant x fois la fonction setTimeout avec des délais différents. J'utiliserai setInterval pour décrémenter une variable en secondes, puis décomposer le tout en heures, minutes, secondes, etc...

    Je vais quand meme répondre pour etre plus clair :

    - i est la variable que j'utilise tout le temps dans mes boucles, et rien d'autre, je ne vois donc pas l'utilité de la délcarer.
    - je reprend son code ( setTimeout(code,millisec[,lang]), pour moi, c'est bien une fonction qui est rentrée, sauf qu'elle fait qu'une ligne)
    - je reprend son code
    - une fois de plus, je reprend son code. je ne ferai pas comme ca de toute facon, si on lance un compte a rebours de 10heures, j'imagine pas le carnage au chargement.
    - je reprend toujours son code, et ca ne change rien au fonctionnement
    - ce sont des habitudes de programmation, pour moi c'est plus clair avec les parentheses, pour toi non, chacun son style.
    - et j'ai bien utilisé l'attribut type.

    Il aurait été plus utile de ta part d'utiliser mes erreurs pour faire quelquechose de global, ainsi ajouter une solution pratique à ce probleme de compte a rebours. Et je trouve inutile de remanier le code fourni par quelqu'un, pour simplement montrer que l'on sait mieux faire. C'est pour cela aussi que j'ai utilisé la base de son code, sans vouloir faire à ma facon.

    Cordialement,
    Florian

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 7
    Par défaut
    Bonjour !

    Comme tu as pu le deviner, il y a deja pas mal d'erreurs de syntaxe, effectivement. Pour ne pas te 'lacher' le code correct inutilement, je vais plutot énumérer les quelques petites erreurs d'étourderies que tu as faites, et qu'on a tous faites.. au passage

    Allons-y...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onLoad="compte_a_rebour('30');"
    Ici tu appelles ta fonction compte_a_rebour (rebours ) et tu passes en paramètre une valeur chaine, c'est a dire, du texte... ok jusque là...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    function compte_a_rebour(temps){
    	 for (i = 0, i<temps, i++)
    Mais ici, gros problème... tu essaies d'utiliser une valeur chaine en tant que nombre... et ca, pas bien Il faut, soit passer en paramètre un nombre (ce qui est le plus simple), soit, utiliser Number(temps) a CHAQUE fois

    De même ici, tu mélanges texte et nombres... seul un nombre est accepté dans ce paramètre, qui est le délai... multiplie tout simplement i par 1000

    - Dernière remarque, si tu souhaites que ce soit un compte a rebours, (30 à 0) il faut inverser les conditions dans ta boucle for {}...

    J'espère que je t'aurai aidé a cerner les petites erreurs que tu as faites, et voici le code fonctionnel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <script type="text/javascript">
    function compte_a_rebour(temps){
    	for (i = temps; i>=0; i--)
    	{
    		window.setTimeout("document.getElementById('temps').innerHTML='"+i+"';",((-1*i)+temps)*1000);
    	}
    }
    </script>
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <body onLoad="compte_a_rebour(30);">
    Cordialement,
    @+

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

Discussions similaires

  1. JavaScript et setTimeout.Besoin information
    Par ovcrash dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 17/05/2009, 00h56
  2. JavaScript<---->ActionScript
    Par crazypiou dans le forum Flash
    Réponses: 21
    Dernier message: 17/04/2009, 17h14
  3. Temporisation en javascript avec Settimeout function switch case
    Par Le_castor_déchainé dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 01/01/2009, 22h46
  4. window.setTimeout [Javascript] [debutant]
    Par sebus dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/11/2006, 15h06
  5. [javascript] problème setTimeout
    Par LE NEINDRE dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 16/06/2006, 14h01

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