2016-03-26 3 views
0

У меня есть таблица голова <th>, который устанавливается по умолчанию 0:JQuery нежелательную сумма результат

<th id="total_price" style="text-align:center">0</th> 

Теперь, когда я добавить новый проданный товар, цена должна быть добавлена ​​к значению этих <th> , Итак, если новый 20000, значение должно быть 20000+0=20000, а не 200000. И если я добавлю еще один товар, цена 30 000 будет теперь равна 20000030 000.

Это JQuery скрипт:

 var initial = $("#total_price").text(); 
     console.log(initial); 
     var newPrice = initial + (res['price']); 
     console.log(newPrice); 
     $("#total_price").text(newPrice); 

Я попытался это:

 var initial = $("#total_price").text(); 
     console.log(initial); 
     var newPrice = initial + +(res['price']); 
     console.log(newPrice); 
     $("#total_price").text(newPrice); 

Но все та же.

enter image description here

+0

Вы должны использовать 'ParseInt()'. Оператор '+' используется для добавления и конкатенации строк. Кроме того, когда вы читаете текст элемента DOM, он читается как строка, а не номер – Rajesh

+1

. У вас было правильное решение, но забыли поставить '+' за 'initial', так как это тоже строка. '+ initial + + (res ['price']);' –

+0

Если вы хотите десятичные знаки, вы должны, вероятно, сделать parseFloat. Кроме того, если вы хотите, чтобы что-то вроде «30 000» или «30 000» было признано 30000, вам сначала придется избавиться от них. Сделайте что-то вроде 'res ['price']. Replace (/ [,]/g, '')' – David784

ответ

4

Вам нужно разобрать текст (строки) в виде целого числа, а затем добавить его. Так что ниже для расчетов

var newPrice = parseInt(initial,10) + parseInt(res['price'],10); 

Или what you are trying would be a string concatenation and not a Sum

Вы можете получить More info Here

1

Как я уже заметил, когда вы читаете текст из элементов DOM, читается как строка и когда вы применяете к нему оператора +, его обрабатывают как конкатенацию и добавление.

После симуляция:

(function(){ 
 
    var th = $("th"); 
 
    var result = ""; 
 
    
 
    result += "Direct addition: " + $(th[0]).text() + $(th[1]).text() + "<br/>"; 
 
    result += "Type: " + typeof($(th[0]).text()) + "<br/>"; 
 
    result += "Parse Int: " + (parseInt($(th[0]).text()) + parseInt($(th[1]).text())) + "<br/>"; 
 
    $("#result").html(result); 
 
})()
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script> 
 
<table> 
 
    <tr> 
 
    <th>20000</th> 
 
    <th>0</th> 
 
    </tr> 
 
</table> 
 
<p id="result"></p>

Также не относятся следующие сообщения: parseInt vs unary plus

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