[英]Jquery: + isn't working right
我正在制作一個有趣的計算器,但由於某種原因,一切都有效,但增加了。 它不是添加兩個數字,而是將它們都寫入。 例如,5 + 7顯示為57。
正如我之前所說, - ,/和*工作正常。 我該怎么解決這個問題?
這是代碼:
$('.solve2').click(function(){
var num1 = $('#num').val();
var num2 = $('#number').val();
var ans = num1+num2;
alert(''+ans+'');
});
使用parseFloat ,它解析一個字符串參數並返回一個浮點數。
var ans = parseFloat(num1)+parseFloat(num2);
根據你的例子,它是作為cocantenation運營商
$('.solve2').click(function(){
var num1 = parseInt($('#num').val());
var num2 = parseInt($('#number').val());
var ans = num1+num2;
alert(''+ans+'');
});
您可以使用另一個答案中所述的parseFloat而不是parseInt。
編輯:如下面的評論中所述,最好強制將字符串解釋為十進制數。 您可以通過添加radix參數來完成此操作。
var radix = 10; //decimal
var num1 = parseInt($('#num').val(), radix);
var num2 = parseInt($('#number').val(), radix);
將值從字符串轉換為數字。 +
既是加法運算符又是cocantenation運算符。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators
很簡單,您必須將字符串轉換為整數。 使用parseInt
var num1 = parseInt($('#num').val());
var num2 = parseInt($('#number').val());
查看我的示例: JSFiddle示例
當你得到一個輸入元素的值 - 通過普通的JS或使用jQuery的.val()
- 它返回一個字符串。 當+
的一個操作數是一個字符串而另一個是一個原語 - 即數字,字符串,布爾值, undefined
或null
- 然后另一個轉換為字符串並連接它們:
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);
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.