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 :

Comportement inattendu d'une boucle For


Sujet :

JavaScript

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 34
    Par défaut Comportement inattendu d'une boucle For
    Salut à tous,

    J'obtiens un comportement étonnant d'une boucle For qui incrémente une variable entre deux "valeurs bornes" récupérées d'un formulaire (de type : number)

    si je mets 1 comme valeur basse (AtkLowUnits) cela fonctionne, mais si j'y place une valeur de 2 ou + la boucle n'itère plus lorsque la borne supérieure (AtkHighUnits) est supérieure à 10.
    si par contre je place une borne basse de 10 ou +, cela fonctionne de nouveau
    pour tester on peut par exemple utiliser comme valeurs :

    1 , 8 (correct)
    1 , 12 (correct)
    2 , 8 (correct)
    2 , 11 (étonnant)
    11 , 16 (de nouveau correct)

    Merci par avance !!!


    Voici le code :

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    <html>
     
    	<head>
     
    		<script type="text/javascript">
                            
                                    function run(){
                                            
                                            var     AtkLowUnits             = document.getElementById('AttackLowUnits').value;              //
                                            var     AtkHighUnits    = document.getElementById('AttackHighUnits').value;             // Variables Globales peuplées avec
     
                                    
    alert(AtkLowUnits + ' -> ' + AtkHighUnits);
                                            for (var I = AtkLowUnits; I <= AtkHighUnits; I++) {
                                                    
                                                    alert(I);
            
                                            }       
                                    }
                                            
                    </script>
     
     
    	</head>	
     
     
    	<body>
    		<form>
    			<label>Unités du pays attaquant :</label><br>								
    			<label>de </label><input type="number" id="AttackLowUnits">
    			<label>à </label> <input type="number" id="AttackHighUnits">
    			<input type="button" value="Démarrer la simulation" onClick="run()">	
    		</form>		
    	</body>	
     
    </html>

  2. #2
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 132
    Par défaut
    Salut
    Des fois ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var AtkLowUnits = Number(document.getElementById('AttackLowUnits').value);              //
    var AtkHighUnits = Number(document.getElementById('AttackHighUnits').value);             // Variables Globales peuplées avec
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Inactif  
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2021
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2021
    Messages : 645
    Par défaut
    Bonjour,

    ProgElecT a raison.

    • xxx.value renvoie toujours une chaine de caractères (string)
    • Dans le cas '2' > '12' : la chaine '12' est "plus petite" que la chaine '2'

    • Number() le transforme en nombre, exploitable

    Pour s'en convaincre :
    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    function run(){
     
      var AtkLowUnits = document.getElementById('AttackLowUnits').value; //
      var AtkHighUnits = document.getElementById('AttackHighUnits').value; // Variables Globales peuplées avec
     
      if (AtkLowUnits <= AtkHighUnits) {
        console.log( 'Chaine : "'+ AtkLowUnits + '" <= "' + AtkHighUnits +'"');
      } else {
        console.log( 'Chaine : "'+ AtkLowUnits + '" > "' + AtkHighUnits +'"');
      }
      if (Number(AtkLowUnits) <= Number(AtkHighUnits) ) {
        console.log( 'Number : '+ AtkLowUnits + ' <= ' + AtkHighUnits );
      } else {
        console.log( 'Number : '+ AtkLowUnits + ' > ' + AtkHighUnits );
      }
    }
    • console.log() affiche le résultat dans la Console (F12 -> onglet "Console")

Discussions similaires

  1. Shell - Erreur dans une boucle for
    Par claralavraie dans le forum Linux
    Réponses: 4
    Dernier message: 11/01/2006, 13h45
  2. : remplir des zones de texte avec une boucle For
    Par Haro_GSD dans le forum Access
    Réponses: 3
    Dernier message: 20/09/2005, 21h23
  3. Problème avec une DLL dans une boucle For
    Par BraDim dans le forum Langage
    Réponses: 5
    Dernier message: 20/09/2005, 12h22
  4. [batch] incrémentation dans une boucle for
    Par bart64 dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 08/09/2004, 20h05
  5. Réponses: 3
    Dernier message: 06/07/2004, 10h21

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