【问题标题】:Javascript adding numbers as if they were a string [duplicate]Javascript将数字添加为字符串[重复]
【发布时间】:2016-11-18 03:36:00
【问题描述】:

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

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

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

收集完这个 cookie 后,我想添加一个。假设该值等于 9,它应该如下所示:value + 1 = 10。简单的数学。但是它给了我这个91。为什么这样做?我知道这是因为它认为数字是一串文本,但是我怎样才能让它表现得像数字呢?

解决方案 在阅读了 cmets 之后,我了解到我需要将我的 value 放在 parseInt() 中。所以我简单地修改了函数说:

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

【问题讨论】:

  • 试试+value 或parseInt(value)
  • 你有没有想过使用parseInt?
  • 发布您实际添加内容的代码部分。

标签: javascript html cookies web


【解决方案1】:

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

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

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

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

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

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

【讨论】:

    【解决方案2】:

    如您所料,Cookie 被保存为字符串值。为了获得您想要的效果,您将需要解析您的值。如果您绝对确定它将是一个整数,请使用:

     parseInt(value) + 1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-03
      • 2012-12-15
      • 2017-12-08
      • 2013-12-28
      • 1970-01-01
      • 2019-02-21
      • 2013-05-07
      相关资源
      最近更新 更多