2014-10-12 108 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