一旦复选框处于活动状态,就会有各种<p>
标记获得类“结果” 。我对他们的操作如下:
function submit(){
alert("in submit");
var user_choice = document.getElementsByClassName("result");
for (var i = 0; i < user_choice.length; i++){
console.log(user_choice[i].innerHTML);
}
localStorage.setItem('storage',user_choice);
}
我希望这会产生一个HTMLcollection。之后,在submitted.html页面(按提交按钮后重定向到该页面),我想console.log
所有项目。所以我这样写:
window.onload = function() {
if ( localStorage.getItem('storage')) {
var got_user_choice = localStorage.getItem('storage');
for (var i = 0; i < got_user_choice.length; i++){
console.log(got_user_choice[i].innerHTML);
}
}
}
只要它是HTMLcollection(读取数组),我就可以使用数组进行操作。但是我在控制台中得到的只是undefined
。我的代码有什么问题?
答案 0 :(得分:4)
本地存储只能包含字符串,不能包含DOM元素。您应该对所有元素进行数组处理,然后将其转换为JSON。
function submit(){
alert("in submit");
var user_choice = document.getElementsByClassName("result");
var html = [];
for (var i = 0; i < user_choice.length; i++){
console.log(user_choice[i].innerHTML);
html.push(user_choice[i].innerHTML);
}
localStorage.setItem('storage',JSON.stringify(html));
}