2017-04-04 5 views
0

私は、若干のプログラムを書くことによってJSを練習しています。これは、ユーザーに日付を入力して、うるう年かどうかを判断するプロンプトです。Javascript初心者:ifステートメント

私はifステートメントとNumber.isInteger(userInput)を使用して、入力が有効かどうかを判断しています。

私の問題は、ほとんどの日付を取得することができますが、閏年にルールが適用されるため、100で割り切れる年は、年として認識されるためには400で除算できる必要があります。うるう年。

私の現在のコードでは、4で割り切れる毎年は有効な年です。私はかなり困惑しています。

<p id="text"></p> 

    <button onclick="leapYear()">Check for leap year</button> 


    <script> 

     function leapYear() { 

      var year = prompt("Please enter a valid year"); 
      year = parseInt(year); 

      if (year != "null") { 

       if (Number.isInteger(year) === true) { 

        if (Number.isInteger(year/400) === true && Number.isInteger(year/100) === true) { 

         document.getElementById("text").innerHTML = year + " is a leap year!"; 


         } else if (Number.isInteger(year/4) === true) { 

          document.getElementById("text").innerHTML = year + " is a leap year!"; 

         } else { 
          document.getElementById("text").innerHTML = year + " is not a leap year"; 
         } 

       } else { 

        document.getElementById("text").innerHTML = "Please enter a valid year"; 

       } 
      } 
     } 







    </script> 

</body> 
+1

可能な重複[チェック年には、JavaScriptでのうるう年の場合](http://stackoverflow.com/questions/16353211/check-if-year-is-leap-year-in-javascript) – Konstantinos

+0

Iこれは非常に非効率的なこの問題を作る方法かもしれないが、私は300がうるう年として渡すことができたときに私のif文がなぜ機能していないのか知りたいと思います。 私はさまざまなアイデアへの提案も受け付けています。 – spamwoo

+0

'else if(Number.isInteger(year/4)=== true)' ...あなたはそれについて何か悩んでいますか? –

答えて

0

全体の時間がが...読書のためのおかげだ場合、私は間違っていました。

<body> 

<p id="text"></p> 

    <button onclick="leapYear()">Check for leap year</button> 


    <script> 

     function leapYear() { 

      var year = prompt("Please enter a valid year"); 
      year = parseInt(year); 

      if (year != "null") { 

       if (Number.isInteger(year) === true) { 

        if (Number.isInteger(year/400) === true && Number.isInteger(year/100) === true) { 

         document.getElementById("text").innerHTML = year + " is a leap year!"; 


         } else if (Number.isInteger(year/400) !== true && Number.isInteger(year/100) === true) { 

          document.getElementById("text").innerHTML = year + " is not a leap year"; 

         } else if (Number.isInteger(year/4) === true) { 

          document.getElementById("text").innerHTML = year + " is a leap year!"; 

         } 

         else { 
          document.getElementById("text").innerHTML = year + " is not a leap year"; 
         } 

       } else { 

        document.getElementById("text").innerHTML = "Please enter a valid year"; 

       } 
      } 
     } 







    </script> 

</body> 
+0

tho、あなたは1行のコードでそれを行うことができます.. – Konstantinos