2014-01-19 8 views
0

localStorage를 사용하여 변수를 저장하고 나중에 정수로 검색하여 다른 정수에 추가 한 다음 다시 저장하려고합니다. 그러나 정수를 문자열로 처리하고 숫자를 연결하는 것으로 보입니다. JSON.stringify를 사용하여 시도했지만 구문 분석 할 수 있지만 작동하지 않는 이유를 볼 수 없습니다. (변수 hours 확실히 정수입니다.)localStorage 추가하지 않고 정수 연결

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)); 
    } 

누군가가 환상적 일 것 나에게 그것을 지적 할 수 그래서 만약 내가 정말 뭔가를 분명 누락 확신합니다, 감사합니다!

+0

JSON의 모습은 어떻습니까? 숫자가 아닌 문자열이있는 것 같습니다. 'parseInt (..., 10)'또는'Number (...)'를 호출하십시오. 보다 나은? – hgoebl

+0

고마워, 네, 전 parseInt로 놀았지만 이전에 제대로 작동하지 못했습니다. 올바른 방향으로 나를 가리켜 주셔서 감사합니다. 지금은 모두 정렬되어 있습니다! – JamesF

답변

3

localStorage는 모든 것을 문자열로 처리합니다. 그것을 Integer로 사용하기 전에 값을 parseInt해야합니다.

게다가 JSON Stringify를 사용하여 배열을 문자열로 변환해야합니다. 가변 시간은 Int이므로 문자열 화가 필요하지 않습니다.

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); 
} 
+0

안녕하세요. 감사합니다. 거의 완벽합니다. 그러나 이제는 temp_hours가 NaN이라고 말합니다. 어떤 생각을 어떻게 해결할 수 있을까요? – JamesF

+0

그것은 나를 위해 작동하기 때문에 이상합니다 : http://jsfiddle.net/2Zy3U/ 문제에 대한 자세한 정보를 추가 할 수 있습니까? localStorage에 올 때까지의 시간은 무엇입니까? (alert (typeof hours);) – Kalzem

+0

그냥'alert (typeof hours)'를했고 그것은 문자열로 나온다! 나는 이전에 산술 연산을 한 것처럼 시간이 정수라고 확신했다. 이것은 다음과 같이 생성되었다 : var 시간 = $ ('# shift_end_time'). timepicker ('getSecondsFromMidnight') - $ ('# shift_start_time') .timepicker ('getSecondsFromMidnight'); if (시간 <0) { 시간 + = 86400; } hours = (hours/3600) .toFixed (2); ' 또한 알리미 (typeof)에 대해 알지 못해 새로운 것을 가르쳐 주셔서 감사합니다! – JamesF

관련 문제