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

+0

Это имеет смысл, но почему это будет вычитаться без необходимости преобразовывать число из строки в целое число? – Chipe

+0

это связано с тем, как javascript обрабатывает '-' и' + 'при использовании их на смешанных типах. @Mrchief объясняет более подробно. – naomik

ответ

3

Вычитание работает, потому что JavaScript преобразует их в числа. Однако в случае добавления он преобразует их в строки, как только один из операндов является строкой.

Вам нужно преобразовать строку в число:

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

Решая знаков после запятой, вы можете также использовать parseFloat который сохранит десятичные точки.

Обновлено fiddle.

+0

Спасибо за объяснение! – Chipe

+0

Добро пожаловать! – Mrchief

+0

Что делать, если мне нужно использовать десятичные знаки. Кажется, они не добавляют их. Он округляется до xx.00 – Chipe

Смежные вопросы