2014-10-12 54 views
0

我似乎無法弄清楚爲什麼減法工作在我的代碼,但當我將減法標誌更改爲加號,我得到一個控制檯錯誤:未捕獲TypeError:undefined不是一個函數。錯誤在哪裏?減法工作在JS但加法不工作在JS

這裏是減法小提琴:http://jsfiddle.net/c8q7p6ac/ 這是與另外到位減號的小提琴:http://jsfiddle.net/c8q7p6ac/1/

的減號和加號都在變updatedNumber

HTML :

<div class="amount">$1000.00</div> 

<input class="new-number" type="text"> 
<div class="button">Click</div> 

的jQuery:

$('.button').on('click', function(){ 
     //get value of input 
     var newNumber = $('.new-number').val(); 

     //get total number value 
     var totalNumber = $('.amount').text(); 

     var getNumberOnly = totalNumber.indexOf('$') + 1; 

     var newTotalNumb = totalNumber.substr(getNumberOnly, totalNumber.length); 

     //add new number to total number 
     var updatedNumber = (newTotalNumb + newNumber).toFixed(2); 


     //and update total 
     $('.amount').html('$'+updatedNumber); 
}); 
+0

您必須先將字符串中的數字轉換爲整數,然後才能將其添加到整數中。 – naomik 2014-10-12 05:42:35

+0

這是有道理的,但爲什麼它會減去,而不必將數字形式的字符串轉換爲整數? – Chipe 2014-10-12 05:45:43

+0

它與javascript處理'-'和'+'時在混合類型上使用它們的方式有關。 @Mrchief更深入地解釋。 – naomik 2014-10-12 05:48:07

回答

3

減法的工作原理是JavaScript將它們轉換爲數字。但是,在添加的情況下,只要其中一個操作數是字符串,它就會將它們轉換爲字符串。

您需要將字符串轉換爲數字:

var updatedNumber = (parseInt(newTotalNumb) + parseInt(newNumber)).toFixed(2); 

雖然處理小數點,你也可以使用parseFloat將保留小數點。

這是更新的fiddle

+0

感謝您的解釋! – Chipe 2014-10-12 05:47:13

+0

不客氣! – Mrchief 2014-10-12 05:49:21

+0

如果我需要使用小數,該怎麼辦?它似乎沒有添加這些。它輪到xx.00 – Chipe 2014-10-12 05:50:52