2016-03-31 9 views
0

Javascriptでifを計算する単純なelse文があります。 "StartStation"の値が "EndStation"より大きい場合、 "StartStation"の値を "EndStation"の値に減算するようにif else文を作成しました。そうでなければ、 "EndStation"値を "StartStation"値に引く。問題は、From:station 8とTo:Station 10を選択すると、+ 2の代わりに-2が得られるということです。javascriptでelseが動作しない場合

HTML

<form> 
      From:<select id="StartStation"> 
      <option selected="selected">---Please select start station</option> 
      <option value="1">Station 1</option> 
      <option value="2">Station 2</option> 
      <option value="3">Station 3</option> 
      <option value="4">Station 4</option> 
      <option value="5">Station 5</option> 
      <option value="6">Station 6</option> 
      <option value="7">Station 7</option> 
      <option value="8">Station 8</option> 
      <option value="9">Station 9</option> 
      <option value="10">Station 10</option> 
      <option value="11">Station 11</option> 
      <option value="12">Station 12</option> 
      <option value="12">Station 13</option> 
     </select> 
      To:<select id="EndStation"> 
       <option value="1">Station 1</option> 
      <option value="2">Station 2</option> 
      <option value="3">Station 3</option> 
      <option value="4">Station 4</option> 
      <option value="5">Station 5</option> 
      <option value="6">Station 6</option> 
      <option value="7">Station 7</option> 
      <option value="8">Station 8</option> 
      <option value="9">Station 9</option> 
      <option value="10">Station 10</option> 
      <option value="11">Station 11</option> 
      <option value="12">Station 12</option> 
      <option value="12">Station 13</option> 
     </select>  
      </form> 
      <input type="button" value="Search" id="Search"/> 
      <div id="FareOutput"></div> 

Javascriptを

$("#Search").on("click", function(){ 
     var $opt = $("#StartStation option:selected"); //From: Selected  
     var strno = $opt.val(); // Start value of fare 

     var $opt2 = $("#EndStation option:selected"); //To: Selected 
     var endno = $opt2.val(); //End value of fare 

      // Fare Calculation ----------------------------------------------------- 

      if (strno > endno) { // If the selected station start from South e.g Taft-North 
       var fare = (strno - endno);    
       } 
      else { 
       var fare = (endno - strno);      
      } 
       console.log(fare);   
       if (fare >=1 && fare <= 2){ 
       var fareresult = "$13"; } 
       else if (fare >=3 && fare<=4){ 
        var fareresult = "$16"; 
       } 
       else if (fare >=5 && fare<=7){ 
        var fareresult = "$20"; 
       } 

       else if (fare >=8 && fare<=10){ 
        var fareresult = "$24"; 
       } 
       else if (fare >=11 && fare<=12) { 
        var fareresult = "$28";} 

        $("#FareOutput").html("Fare:" +" " + fareresult); 

       }); 

+0

console.log strnoとendnoを使用できますか? –

+3

ヒント...あなたが少し多くの 'var'を持っていると思いませんか? –

答えて

2

のif/else文は、差の絶対値を取ることですへのよりよい解決策:

var fare = Math.abs(strno - endno); 
+0

それはトリックをしました!。ありがとう@Graash! – JessieBear

+1

私の答えが働いた場合は、あなたの質問を見ている人々のための正しい答えとしてマークしてください? – Gremash

2

strno > endno文字列"10""8"を比較すると、結果はfalseで、"10" < "8"となります。

"10" - "8"を計算すると、自動的に強制的に番号がキックされ、結果は-2になります。

1

@Gremashはあなたのためのよりよい解決策を持って、私は問題が何であるかをあなたに伝えたいと思います:(STRNO> endno)値はまだとして扱われる場合は、比較を行っている

文字列。そして、文字列 "8"は文字列 "10"よりも大きく、比較が進む。減算では、の数値がに自動的に変換されます。

比較する前に値がの数値であることを確認する必要があります。

1

計算前に数値を整数または浮動小数点数に変換します(精度要件に応じて)。 (jqueryのために)parseInt()(ジャバスクリプト)または.toNum()を使用します。

var $opt = $("#StartStation option:selected"); //From: Selected  
    var strno = parseInt($opt.val()); // Start value of fare 

    var $opt2 = $("#EndStation option:selected"); //To: Selected 
    var endno = parseInt($opt2.val()); //End value of fare 

     // Fare Calculation ----------------------------------------------------- 

     if (strno > endno) { // If the selected station start from South e.g Taft-North 
      var fare = (strno - endno);    
      } 
     else { 
      var fare = (endno - strno);      
     } 

また、あまりにも多くのVARSはここにある小さいメモリ空間を使用するようにコードを最適化することで:

$("#Search").on("click", function(){ 
    var $opt = $("#StartStation option:selected"); //From: Selected  
    var strno = $opt.val(); // Start value of fare 

    var $opt2 = $("#EndStation option:selected"); //To: Selected 
    var endno = $opt2.val(); //End value of fare 

     // Fare Calculation ----------------------------------------------------- 
     var fare = 0; 
     if (strno > endno) { // If the selected station start from South e.g Taft-North 
      fare = (strno - endno);    
      } 
     else { 
      fare = (endno - strno);      
     } 
      console.log(fare); 
      var fareresult = "$0";  
      if (fare >=1 && fare <= 2){ 
      fareresult = "$13"; } 
      else if (fare >=3 && fare<=4){ 
       fareresult = "$16"; 
      } 
      else if (fare >=5 && fare<=7){ 
       fareresult = "$20"; 
      } 

      else if (fare >=8 && fare<=10){ 
       fareresult = "$24"; 
      } 
      else if (fare >=11 && fare<=12) { 
       fareresult = "$28";} 

       $("#FareOutput").html("Fare:" +" " + fareresult); 

      }); 

・ホープ、このことができます。.. :)

+0

助けてくれてありがとう@Kailas! – JessieBear

1

&減算、 を比較する前に、整数使用jsの機能のparseInt(の値を解析する数値の中の値(例えばを解析する必要があります))。

1

オーケーうん、これを試してみてください。

$("#Search").on("click", function() { 
    var $opt = $("#StartStation option:selected"); //From: Selected  
    var strno =parseInt( $opt.val()); //New Integer Start value of fare 

    var $opt2 = $("#EndStation option:selected"); //To: Selected 
    var endno = parseInt($opt2.val()); //New Integer End value of fare 

    // Fare Calculation ----------------------------------------------------- 

    if (strno > endno) { // If the selected station start from South e.g Taft-North 
     var fare = (strno - endno); 
    } 
    else { 
     var fare = (endno - strno); 
    } 
    console.log(fare); 
    if (fare >= 1 && fare <= 2) { 
     var fareresult = "$13"; 
    } 
    else if (fare >= 3 && fare <= 4) { 
     var fareresult = "$16"; 
    } 
    else if (fare >= 5 && fare <= 7) { 
     var fareresult = "$20"; 
    } 

    else if (fare >= 8 && fare <= 10) { 
     var fareresult = "$24"; 
    } 
    else if (fare >= 11 && fare <= 12) { 
     var fareresult = "$28"; 
    } 

    $("#FareOutput").html("Fare:" + " " + fareresult); 

}); 

デフォルトでは文字列としてSTRNOとendnoを取っているような問題を解決する整数値を格納するpasreInt()を使用。

関連する問題