我第一次玩饼干,我已经完成了部分保存。我正在保存的数据是数字,这些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]);
}
答案 0 :(得分:1)
JavaScript中的+
运算符可以表示数学加法或字符串连接。你得到的是基于操作数的隐式类型。如果其中一个操作数是一个字符串,另一个操作数将转换为字符串,您将得到连接。
诀窍是首先对数字进行数学运算(您可以用括号括起数学部分或在单独的语句中进行数学运算)然后将结果注入到字符串中。
要将包含数字字符的字符串强制转换为数字,您可以使用parseInt()
和parseFloat()
:
var result = parseInt(value, 10) + 1;
请注意,对于parseInt()
,您应该提供可选的第二个参数,该参数指定操作的基数。如果第一个参数恰好引用包含十六进制值的字符串,则结果将基于十六进制而不是基数10.这就是我的示例中使用10的原因。
另请注意,找到第一个无法被视为数字的无效字符后,parseInt()
和parseFloat()
都会停止。所以,在这样的字符串中:"Scott7Marcy9"
,你会得到NaN。
答案 1 :(得分:0)
根据您的猜测,Cookie会保存为字符串值。为了获得理想的效果,您需要解析自己的价值。如果您完全确定它是一个整数,请使用:
parseInt(value) + 1