2014-01-27 3 views
0

나는 티켓을 구입 한 영화 목록을 보관할 곳이 localStorage입니다. 이 목적으로 배열을 만들었습니다. 이 배열에 새로운 값을 넣을 수 없다는 문제가 localStorage입니다.항목을 localStorage의 배열로 푸시 할 수 없습니다.

코드 :

if(window.localStorage){ 
    if(localStorage.getItem('movies_list')){ 
     var movies_list = localStorage.getItem('movies_list'); 
     console.log("Movies List: " + localStorage.getItem('movies_list')); 
     var movie = $("#movie_name").val(); 
     movies_list.push(movie); // Error here 
     localStorage.setItem('movies_list',movies_list); 
    } 
    else{ 
     var movies_list = new Array(); 
     var movie = $("#movie_name").val(); 
     movies_list.push(movie); 
     localStorage.setItem('movies_list',movies_list); 
    } 
} 

오류 : console.log() 항상 LIST: Movie 1을 반환

Uncaught TypeError: Object Movie 1 has no method 'push' 

, 다음 영화가 배열에 pushed을받지처럼 보인다.

새 값을 배열에 푸시하려면 어떻게해야합니까? 추가

jsFiddle

답변

1

항목은/문자열 로컬 스토리지에서 얻을 수 있습니다. 따라서 JSON 인코딩/디코딩이 필요합니다.

localStorage.setItem('movies_list', JSON.stringify(movies_list)); 

그리고

var movies_list = JSON.parse(localStorage.getItem('movies_list')); 

http://jsfiddle.net/Kx9R6/1/

+0

피들에서 'Uncaught SyntaxError : 예기치 않은 토큰 M'이라는 오류가 발생합니다. –

+0

일부 코드를 리팩터링했습니다. 다시 시도해주세요. 여전히 오류가 발생하면 Chrome 개발자 도구를 사용하여 로컬 저장 공간에서 '영화 _ 목록'을 삭제 해보세요. – sroes

+0

죄송합니다. 동일한 오류가 다시 발생합니다. 로컬 저장소에서'movie_list'를 어떻게 제거합니까? –

0

로컬 스토리지 accpets 저장 문자열 만, 당신은 직접 배열을 저장할 수 없습니다. 대신 저장하는 동안 JSON.stringify를 수행하고 검색하는 동안 JSON.parse를 수행 할 수 있습니다.

관련 문제