【问题标题】:localStorage concatenating Integer instead of addinglocalStorage 连接整数而不是添加
【发布时间】:2014-01-19 22:21:14
【问题描述】:

尝试使用 localStorage 简单地存储变量,稍后将其作为整数检索,将其添加到另一个整数,然后再次存储。但是,它似乎将整数视为字符串并连接数字。我尝试过使用 JSON.stringify 和解析,但它不起作用,我不明白为什么。 (变量hours绝对是整数。)

 if (localStorage.getItem('hours_worked') === null) {
       localStorage.setItem('hours_worked', JSON.stringify(hours));  
   }
 else {
       var temp_hours = JSON.parse(localStorage.getItem('hours_worked'));
       var temp_hours1 = temp_hours + hours;
       alert(temp_hours1);
       localStorage.setItem('hours_worked', JSON.stringify(temp_hours1));  
   }

我确定我遗漏了一些非常明显的东西,所以如果有人可以向我指出,那就太好了,谢谢!

【问题讨论】:

  • 你的 JSON 是什么样子的?好像你有一个字符串而不是一个数字。致电parseInt(..., 10)Number(...)。更好?
  • 谢谢,是的,我曾经玩过 parseInt,但之前无法让它工作,感谢您为我指明了正确的方向,现在一切都解决了!

标签: javascript local-storage


【解决方案1】:

localStorage 将所有内容都视为字符串。在将其用作整数之前,您必须先解析其值。

此外,您应该使用 JSON Stringify 将数组转换为字符串。你的变量 hours 是一个 Int 所以你不需要 Stringify 它。

if (localStorage.getItem('hours_worked') === null) {
   localStorage.setItem('hours_worked', hours);  
}
else {
   var temp_hours = parseInt(localStorage.getItem('hours_worked'),10);
   var temp_hours1 = temp_hours + hours;
   alert(temp_hours1);
   localStorage.setItem('hours_worked', temp_hours1);  
}

【讨论】:

  • 您好,谢谢,这几乎是完美的。但是,现在说 temp_hours 是 NaN。知道如何解决这个问题吗?
  • 这很奇怪,因为它对我有用:jsfiddle.net/2Zy3U你能添加更多关于你的问题的信息吗?放在 localStorage 之前的几个小时的起源是什么? (做一个警报(typeof hours);)
  • 刚刚做了alert(typeof hours),它就出现了字符串!我确信小时数是一个整数,因为我之前对其进行了算术运算,这就是它的创建方式:var hours = $('#shift_end_time').timepicker('getSecondsFromMidnight') - $('#shift_start_time').timepicker('getSecondsFromMidnight'); if (hours < 0) { hours += 86400; } hours = (hours / 3600).toFixed(2); 另外,不知道警报(typeof)所以谢谢你教我一些新东西!
  • 不客气 ;) 问题是固定的,它将数字转换为字符串。我猜你正在寻找一些舍入函数。在 javascript 中使用 Math 对象。 hours = Math.round((hours/3600) * 100) / 100
  • 啊,我现在明白了,感谢您的帮助,我学到了很多东西,我的任务“应该”现在顺利进行。干杯
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多