Javascript将数字添加为字符串

时间:2016-11-17 17:26:49

标签: javascript html cookies web

我第一次玩饼干,我已经完成了部分保存。我正在保存的数据是数字,这些nubers最重要的部分是我可以添加,减去等等。但是,当我尝试将一个数字添加到我保存的参数之一时,它会将它们添加为文本。

示例: 我有一个名为value的cookie,当我想要这个值时,我使用Jeffery To找到的脚本,如下所示:

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

我收集了这个cookie后,我想添加一个。让我们说价值等于九,它应该是这样的:value + 1 = 10。简单的数学。但它给了我91。为什么这样做?我知道这是因为它认为数字是一串文字,但我怎么能让它像数字一样?

解决方案 阅读完评论后,我了解到我需要将value放入parseInt()。所以我只是简单地修改了这个功能:

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

2 个答案:

答案 0 :(得分:1)

JavaScript中的+运算符可以表示数学加法或字符串连接。你得到的是基于操作数的隐式类型。如果其中一个操作数是一个字符串,另一个操作数将转换为字符串,您将得到连接。

诀窍是首先对数字进行数学运算(您可以用括号括起数学部分或在单独的语句中进行数学运算)然后将结果注入到字符串中。

要将包含数字字符的字符串强制转换为数字,您可以使用parseInt()parseFloat()

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

请注意,对于parseInt(),您应该提供可选的第二个参数,该参数指定操作的基数。如果第一个参数恰好引用包含十六进制值的字符串,则结果将基于十六进制而不是基数10.这就是我的示例中使用10的原因。

另请注意,找到第一个无法被视为数字的无效字符后,parseInt()parseFloat()都会停止。所以,在这样的字符串中:"Scott7Marcy9",你会得到NaN。

答案 1 :(得分:0)

根据您的猜测,Cookie会保存为字符串值。为了获得理想的效果,您需要解析自己的价值。如果您完全确定它是一个整数,请使用:

 parseInt(value) + 1