localStorage连接Integer而不是添加

时间:2014-01-19 14:02:22

标签: javascript local-storage

尝试使用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));  
   }

我确信我错过了一些非常明显的东西,所以如果有人能指出我的话会很棒,谢谢!

1 个答案:

答案 0 :(得分:3)

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

此外,您应该使用JSON Stringify将数组转换为字符串。您的变量小时是一个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);  
}