2017-04-23 98 views
0

看到我的代碼下面。它應該添加和減去輸入的0.1。但是,當我點擊+按鈕時,它會在toFixed(2)函數中出錯。爲什麼這不起作用,當 - 按鈕做?我的代碼jsfiddleJavascript tofixed not working

HTML:

 <div class="input-group"> 
      <span class="input-group-btn"> 
       <button type="button" class="iLiter-left-minus btn btn-lg btn-info btn-number" data-type="minus" data-field="">- 
       </button> 
      </span> 
      <input type="number" id="iLiter" class="form-control input-number input-lg" value="0.4" min="0.1" max="10"> 
      <span class="input-group-btn"> 
       <button type="button" class="iLiter-right-plus btn btn-lg btn-info btn-number" data-type="plus" data-field=""> 
        + 
       </button> 
      </span> 
     </div> 

的JavaScript:

 $('.iLiter-right-plus').click(function (e) { 
      e.preventDefault(); 
      var quantity = parseFloat($('#iLiter').val()); 
      quantity = quantity.toFixed(2); 
      if (quantity < 10.0) { 
       quantity = quantity + 0.1; 
       quantity = quantity.toFixed(2); 
       $('#iLiter').val(quantity); 
      } 
     }); 
     $('.iLiter-left-minus').click(function (e) { 
      e.preventDefault(); 
      var quantity = parseFloat($('#iLiter').val()); 
      quantity = quantity.toFixed(2); 
      if (quantity > 0.1) { 
       quantity = quantity - 0.1; 
       quantity = quantity.toFixed(2); 
       $('#iLiter').val(quantity); 
      } 
     }); 
+1

'工作toFixed'一個'Number'轉換爲'String' https://developer.mozilla.org/en-US/docs/Web/ JavaScript/Reference/Global_Objects/Number/toFixed – gurvinder372

+1

這應該有助於http://stackoverflow.com/questions/15762768/javascript-math-round-to-two-decimal-places – gurvinder372

回答

1

嘗試

quantity = +quantity + 0.1; 

quantity = +quantity - 0.1; //(here + is optional) 

在您的代碼中的相應位置。它不適用於「+」按鈕,因爲「+」也表示字符串連接,"string" + number的結果是字符串"stringnumber",而字符串沒有「toFixed」方法(因爲它反映在控制檯錯誤消息中),而「 - 「操作符將字符串quantity轉換爲數字,一切按預期工作。

+0

哦,我明白了。我會用馬丁的答案,但現在它有道理爲什麼減號工作。謝謝! – mathkid91

1

讓我們嘗試

quantity = Number(quantity) + 0.1; 
1

您與toFixed(2)的浮點數(你只是解析與parseFloat())迴轉換爲字符串。在+運算符的情況下,您傳遞的是類似0.50.1這不是有效的數字字符串(因此調用'0.50.1'.toFixed(2)時出錯)。

呼叫.toFixed只有一次,(不與值加工前)更新HTML前值:

$('.iLiter-right-plus').click(function (e) { 
    e.preventDefault(); 
    var quantity = parseFloat($('#iLiter').val()); 
    if (quantity < 10.0) { 
    quantity = quantity + 0.1; 
    quantity = quantity.toFixed(2); 
    $('#iLiter').val(quantity); 
    } 
}); 
$('.iLiter-left-minus').click(function (e) { 
    e.preventDefault(); 
    var quantity = parseFloat($('#iLiter').val()); 
    if (quantity > 0.1) { 
    quantity = quantity - 0.1; 
    quantity = quantity.toFixed(2); 
    $('#iLiter').val(quantity); 
    } 
}); 

更新小提琴這裏:https://jsfiddle.net/2fq6bhxs/2/

1

請改變你的Javascript源喜歡這個

 $('.iLiter-right-plus').click(function (e) { 
      e.preventDefault(); 
      var quantity = parseFloat($('#iLiter').val()); 
      quantity = parseFloat(quantity.toFixed(2)); 
      if (quantity < 10.0) { 
       quantity = quantity + 0.1; 
       quantity = quantity.toFixed(2); 
       $('#iLiter').val(quantity); 
      } 
     }); 
     $('.iLiter-left-minus').click(function (e) { 
      e.preventDefault(); 
      var quantity = parseFloat($('#iLiter').val()); 
      quantity = parseFloat(quantity.toFixed(2)); 
      if (quantity > 0.1) { 
       quantity = quantity - 0.1; 
       quantity = quantity.toFixed(2); 
       $('#iLiter').val(quantity); 
      } 
     }); 

當您使用.toFixed =>您的quantity將是一個字符串。 所以接下來.toFixed將無法​​工作,因爲.toFixed則只用一個編號