2016-03-26 24 views
0

我有一個表頭<th>被默認設置爲0jQuery的不必要的總和結果

<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