我如何在本地存储中存储一个数组,然后获取内容,然后将它们添加到 select 对象
How do i store an array in localstorage and then get the contents and then add them to a select object
这是我用来获取数组然后将它们添加到 select 对象的代码。
var select = document.getElementById('select');
var theArray = localStorage.getItem("array")
JSON.parse(theArray)
if (theArray != null){
for (var i=0; i > theArray.length; i++){
select.add(theArray[i])
}
}
这是我用来设置 localStorage 值的代码。
var select = document.getElementById('select');
var option = document.createElement("option");
option.text = visText;
option.value = actVal;
select.add(option)
theArray[theArray.length+1] = option;
localStorage.setItem("array",JSON.stringify(theArray))
谁能告诉我如何解决这个问题?
您似乎忘记将已解析的 Json 分配给变量:
let select = document.getElementById('select')
let data = JSON.parse(localStorage.getItem('array'))
for(let entry of data) {
select.add(new Option(entry))
}
不能 100% 确定它是否有效,但应该可以。
你可以直接用点号调用session和local storage。下面的代码片段显示了这一点。但是,此处的代码段是沙盒化的,无法写入。因此,为了演示如何从数组中填充 select 元素,我使用了 try..catch
块,因此当它出错时,它至少会使用原始 [=] 填充 select 选项14=]变量。
const array = new Array(10).fill(0).map((elm, idx) => (elm = idx, elm));
let arrayFromStorage;
try {
window.localStorage.myArray = JSON.stringify(array);
arrayFromStorage = JSON.parse(window.localStorage.myArray);
} catch (error) {
console.warn(error.message)
arrayFromStorage = array;
}
arrayFromStorage.forEach(elm => {
const opt = document.createElement('option');
opt.value = elm;
opt.innerText = `option ${elm}`;
document.querySelector('select').append(opt);
})
<select></select>
如果你copy/paste把它放到浏览器控制台,你可以看到它可以使用点符号设置和调用
const array = new Array(10).fill(0).map((elm, idx) => (elm = idx, elm));
let arrayFromStorage;
window.localStorage.myArray = JSON.stringify(array);
arrayFromStorage = JSON.parse(window.localStorage.myArray);
这是我用来获取数组然后将它们添加到 select 对象的代码。
var select = document.getElementById('select');
var theArray = localStorage.getItem("array")
JSON.parse(theArray)
if (theArray != null){
for (var i=0; i > theArray.length; i++){
select.add(theArray[i])
}
}
这是我用来设置 localStorage 值的代码。
var select = document.getElementById('select');
var option = document.createElement("option");
option.text = visText;
option.value = actVal;
select.add(option)
theArray[theArray.length+1] = option;
localStorage.setItem("array",JSON.stringify(theArray))
谁能告诉我如何解决这个问题?
您似乎忘记将已解析的 Json 分配给变量:
let select = document.getElementById('select')
let data = JSON.parse(localStorage.getItem('array'))
for(let entry of data) {
select.add(new Option(entry))
}
不能 100% 确定它是否有效,但应该可以。
你可以直接用点号调用session和local storage。下面的代码片段显示了这一点。但是,此处的代码段是沙盒化的,无法写入。因此,为了演示如何从数组中填充 select 元素,我使用了 try..catch
块,因此当它出错时,它至少会使用原始 [=] 填充 select 选项14=]变量。
const array = new Array(10).fill(0).map((elm, idx) => (elm = idx, elm));
let arrayFromStorage;
try {
window.localStorage.myArray = JSON.stringify(array);
arrayFromStorage = JSON.parse(window.localStorage.myArray);
} catch (error) {
console.warn(error.message)
arrayFromStorage = array;
}
arrayFromStorage.forEach(elm => {
const opt = document.createElement('option');
opt.value = elm;
opt.innerText = `option ${elm}`;
document.querySelector('select').append(opt);
})
<select></select>
如果你copy/paste把它放到浏览器控制台,你可以看到它可以使用点符号设置和调用
const array = new Array(10).fill(0).map((elm, idx) => (elm = idx, elm));
let arrayFromStorage;
window.localStorage.myArray = JSON.stringify(array);
arrayFromStorage = JSON.parse(window.localStorage.myArray);