的問題是,.val()
返回元素的值作爲一個字符串,當您使用+
運營商在一根繩子上它確實字符串連接。您需要將值轉換爲數字第一:
var num = +$("#originalnum").val() + 1; // unary plus operator
// OR
var num = Number($("#originalnum").val()) + 1; // Number()
// OR
var num= parseFloat($("#originalnum").val()) + 1; // parseFloat()
// OR
var num= parseInt($("#originalnum").val(),10) + 1; // parseInt()
請注意,如果您使用parseInt()
你必須包括基數(10)作爲第二個參數,否則會(視瀏覽器)治療用繩子作爲八進制的前導零以及具有前導"0x"
的字符串作爲十六進制。還要注意parseInt()
會忽略字符串末尾的任何非數字字符,包括用戶可能打算用作小數點的句號,因此parseInt("123.45aasdf",10)
返回123
。同樣,parseFloat()
會忽略字符串末尾的非數字字符。
此外,如果它是一個用戶輸入的值,你應該仔細檢查,它實際上是一個數字,如果不是可能提供錯誤消息。
當您使用*
,/
或-
運營商JS試圖將字符串自動轉換爲數字,所以這就是爲什麼這些運營商的「工作」(假設這個字符串可以轉換)。
使用一個'':-) – Bergi