2011-08-13 67 views
1

我需要在javascript中總結幾個值。我嘗試過使用以下代碼Javascript總和值

var a = 2; 
var b = 5; 
c = a+b; 

但是,不是計算a和b的值,而是輸出(c)只合並這兩個值。所以給出的輸出是:

c = 25 

我相信你們可以幫我輕鬆解決這個問題。 Thx之前。注意安達。

+3

在這裏發帖之前,測試你的代碼。這個版本實際上有效:P – hugomg

+1

不要忘記使用parseInt,parseInt(a,10) – sciritai

+0

@sciritai指定基數 - 的確如此! – JAAulde

回答

7

您的代碼正在添加(連接)字符串。你確定你發佈的代碼代表你的問題嗎?你寫的東西應該可以工作。一定要在實際的代碼你不是說:

var a = '2'; // or something similar 

或者,如果值從某處解析,請務必在做加法,10爲基數之前,呼籲他們parseInt(a, 10)

或正如在評論中指出的Number函數可能會適合您的目的。

+0

是的。我不使用任何價值的報價。我也已經通過使用parseInt(a)和parseInt(b)將它們轉換爲int。我做對了嗎? – Andha

+3

以及它取決於。 'parseInt(a)'不改變'a'變量,它返回解析的int。所以你可能需要'a = parseInt(a)'或'c = parseInt(a)+ parseInt(b)' – numbers1311407

+1

確保在'parseInt()'的調用中使用'radix'參數。 – JAAulde

2

這工作得很好:

var a = 2; 
var b = 5; 
var c = a + b; // c is now 7 
5

確保值是數字,否則會Concat的,而不是suming。

a = parseInt(a, 10); // a is now int 
+0

thx這個兄弟。它現在正在工作。 – Andha

+2

一定要在'parseInt()'的調用中使用'radix'參數。 – JAAulde

+0

好點。更新 – kjetilh

1

您顯示的代碼不會按照您描述的方式工作。這將導致7

但是,當試圖執行加法操作時,如果其中一個或兩個數字值實際上是數字字符串,則其他值將被轉換爲字符串,並且它們將被連接。

當嘗試讀取表單值,讀取cookie或某種其他類型的HTTP標頭時,這很可能發生。要將字符串轉換爲數字,您需要使用parseInt() [docs]。仔細閱讀文檔和務必注意並提供第二個參數(radix以確保從字符串到數字的轉換使用您期望的基數。 (在其他的答案radix缺乏信息是主要的原因我繼續貼出哪怕別人已經提到parseInt()一個答案。)

此外,僅供參考,另一個方便的功能,具有未知值的交易時使用並希望進行數學運算的是isNaN() [docs]。

+1

什麼信息,thx這麼多。很有幫助。 – Andha

+0

http://www.javascripttoolbox.com/bestpractices/#onclick指出你可以做一個:X =(+「2」)+(+「b5」) - 我發現其中間:) – Mike

3

作者可能會把「簡化」的代碼,所以我們可以得到一個想法。有同樣的問題,同時獲得輸入值。 JS將其解釋爲字符串。使用 「號()」 解決了這個問題:

var sum = Number(document.getElementById("b4_f2_"+i).value) + Number(document.getElementById("b4_f3_"+i).value) + Number(document.getElementById("b4_f4_"+i).value); 
-2

使用parseInt()

var a=2; 
var b=5; 
c=parseInt(a)+parseInt(b);