2017-02-26 1 views
0

J'utilise le site Web de JS Bin pour écrire ceci.Faire boucle while ne fonctionne pas avec invite. Javascript

les feux de boucle une seule fois quand je donne une mauvaise entrée (numérique):

function isInputLeapYear() 
{ 
    var year = -1; 

    var inputOk = true; 

    do{ 
     year = prompt("Please enter a year to check if it is a leap year \ninput year between 0-9999"); 

     if(year < 0 || 9999 < year) // check input 
     { 
     inputOk = false; 
     alert("\""+year+"\" is not a good year. \nThe input needs to be between 0-9999");    
     }; 


    }while(inputOk === false); 


    .... 
} 
+2

La fonction '' prompt' renvoie un string', pas 'number'. Vous pouvez jeter un oeil à la fonction ['parseInt'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt). –

+1

Vous devez ajouter un 'else {inputOk = true; } ', sinon votre code fonctionne bien pour moi. – 4castle

+0

@DarinDimitrov est la bonne fonction .use parseInt. année = parseInt (entrée). –

Répondre

-2

Déplacez le var inoutOK = true dans la boucle de cette façon, il remet à zéro avant de demander à nouveau.

function isInputLeapYear() 
{ 
    var year = -1; 

    do { 
     var inputOk = true; 
     year = prompt("Please enter a year to check if it is a leap year \ninput year between 0-9999"); 

     if(year < 0 || 9999 < year) // check input 
     { 
      inputOk = false; 
      alert("\""+year+"\" is not a good year. \nThe input needs to be between 0-9999");    
     }; 


    } while(inputOk === false); 


    .... 
} 
+1

Les vidages de code ne sont pas des réponses utiles. Dites * quoi * vous avez changé, et * pourquoi *. –

+0

@ T.J.Crowder merci ne le savais pas. J'ai édité la réponse. – MotKohn

-2
function isInputLeapYear() 
    { 
     var year = -1; 

     var inputOk = false; 

     do{ 
      year = prompt("Please enter a year to check if it is a leap year \ninput year between 0-9999"); 

      if(year > 0 && 9999 > year) // check input 
      { 
      inputOk = True; 



      else 
{ 
alert("\""+year+"\" is not a good year. \nThe input needs to be between 0-9999"); 
} 
      }; 


     }while(inputOk === false); 


     .... 
    } 
+0

Les vidages de code ne sont pas des réponses utiles. Dites * ce * que vous avez fait, et * pourquoi *. (Et le code de format raisonnablement.) –

+0

Notez également que vous avez modifié la plage. Vous ne pouvez pas changer 'year <0'' 'year> 0' pour inverser cette condition. C'est 'year> = 0'. –