2013-10-01 242 views
1

我正在製作一個有趣的計算器,但由於某種原因,一切都有效,但除此之外。 不是添加兩個數字,而是將它們寫入。例如5 + 7顯示爲57.Jquery:+不能正常工作

正如我之前所說的, - ,/和*工作正常。我應該如何解決這個問題?

下面是代碼:

$('.solve2').click(function(){ 
var num1 = $('#num').val(); 
var num2 = $('#number').val(); 
var ans = num1+num2; 
alert(''+ans+''); 
}); 

回答

2
$('.solve2').click(function(){ 
var num1 = parseInt($('#num').val()); 
var num2 = parseInt($('#number').val()); 
var ans = num1+num2; 
alert(''+ans+''); 
}); 

相反parseInt函數,你可以使用parseFloat作爲另一個答案說明。

編輯: 正如下面的評論所述,最好強制字符串解釋爲十進制數。您可以通過添加基數參數來完成此操作。

var radix = 10; //decimal 
var num1 = parseInt($('#num').val(), radix); 
var num2 = parseInt($('#number').val(), radix); 
+1

你錯過了'parseInt'的'radix'參數。 –

+0

基數參數是可選的,據我所知,提問者只使用十進制數。 (在較老的瀏覽器中,當用戶輸入一個前導'0'的數字時可能會出現問題,因此添加10的基數可能會更安全。但這不是必需的。) – Tom

+0

@Tom八進制符號仍然有效並在嚴格模式之外的現代瀏覽器中受到支持。 –

2

使用parseFloat,它解析字符串參數,並返回一個浮點數。

var ans = parseFloat(num1)+parseFloat(num2); 

按照您的例子,它正在爲cocantenation操作

0

很簡單,你必須把你的字符串轉換爲整數。使用parseInt函數

var num1 = parseInt($('#num').val()); 
var num2 = parseInt($('#number').val()); 

查看我的樣本: JSFiddle sample

0

當你輸入元素的價值 - 無論是通過純JS或使用jQuery的.val() - 它返回一個字符串。並且當+其中一個操作數是一個字符串,而另一個是一個原始 - 即一個數字,字符串,布爾undefinednull - 然後另一個被轉換爲字符串和它們被連接:

4 + " four" === "4 four"; // true 
false + " is now a string" === "false is now a string"; // true 

因此,你的價值從.val()返回被連接,並且需要使用parseFloat.val()返回到數字的字符串轉換:

$('.solve2').click(function(){ 
    var num1 = parseFloat($('#num').val()), 
     num2 = parseFloat($('#number').val()), 
     ans = num1 + num2; 
    console.log(ans); 
});