2016-11-17 69 views
0

我一直在玩餅乾,我已經完成了一部分儲存。我保存的數據是數字,這些數字的最重要的部分是我可以使用這些數字進行加,減等操作。但是,當我嘗試將一個數字添加到其中一個保存的參數中時,它將它們添加爲文本。Javascript添加數字,就好像它們是一個字符串

例子: 我有一個名爲value餅乾,當我想這個值我使用腳本我發現Jeffery To,看起來像這樣:

function readCookie(name) { 
    return (name = new RegExp('(?:^|;\\s*)' + ('' + name).replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&') + '=([^;]*)').exec(document.cookie)) && name[1]; 
} 

後,我已經收集了這個cookie我想給它添加一個。可以說這個值等於九,當它看起來像這樣:value + 1 = 10。簡單的數學。不過它給了我這個91。它爲什麼這樣做?我知道這是因爲它認爲數字是一串文本,但我怎麼能得到這個行爲像數字?

解決方案 閱讀我才知道,我需要把我的valueparseInt()的意見後。所以,我只是修改了funtion說:

function readCookie(name) { 
     return parseInt((name = new RegExp('(?:^|;\\s*)' + ('' + name).replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&') + '=([^;]*)').exec(document.cookie)) && name[1]); 
    } 
+0

嘗試'+ value'或'parseInt函數(值)' –

+0

你有沒有想過使用[parseInt函數(https://developer.mozilla.org/EN-US /文檔/網絡/的JavaScript /參考/ Global_Objects/parseInt函數)? – larz

+0

發佈的代碼部分,你實際上添加的東西。 –

回答

1

+運營商在JavaScript可能意味着數學加法或字符串連接。你得到的是基於操作數的隱式類型。如果其中一個操作數是一個字符串,另一個將被轉換爲一個字符串,你會得到串聯。

的訣竅是做對數數學第(你可以圍繞與括號中的數學部分或做數學題在一個單獨的語句),然後注入到結果的字符串。

要強制包含數字字符轉換爲數字的字符串,你可以使用parseInt()parseFloat()

var result = parseInt(value, 10) + 1; 

注意與parseInt(),你應該提供可選的第二個參數,指定用於操作的基數。如果第一個參數恰好指向包含十六進制值的字符串,則結果將基於十六進制,而不是基數10.這就是爲什麼在我的示例中使用了10。

另請注意,parseInt()parseFloat()在找到第一個無法被視爲數字的無效字符後停止。所以,像這樣的字符串:"Scott7Marcy9",你會得到NaN。如你猜

0

餅乾保存爲字符串值。爲了得到你想要的效果,你將需要分析你的價值。如果你是絕對肯定,這將是一個整數,使用:

parseInt(value) + 1 
相關問題