我有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);
}
}
错误:
Uncaught TypeError: Object Movie 1 has no method 'push'
console.log()
始终返回LIST: Movie 1
,好像下一部电影没有pushed
进入数组。
如何将新值推送到数组?
答案 0 :(得分:1)
您从localStorage添加/获取的项目是字符串。所以你需要对它们进行JSON编码/解码。
localStorage.setItem('movies_list', JSON.stringify(movies_list));
和
var movies_list = JSON.parse(localStorage.getItem('movies_list'));
答案 1 :(得分:0)
localStorage只接受和存储字符串,不能直接保存数组。相反,您可以在保存期间执行JSON.stringify,并在检索期间执行JSON.parse。
var movies = ["movie1","movie2","movie3"];
//Saving
localStorage.movies_list = JSON.stringify(movies);
//Retrieving
var list = JSON.parse(localStorage.movies_list);
list.push("movie4");