激活复选框后,会有各种<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
。我的代码有什么问题? 最佳答案
本地存储只能包含字符串,不能包含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));
}