這是我用來獲取陣列然后將它們添加到選擇物件的代碼。
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))
誰能告訴我如何解決這個問題?
uj5u.com熱心網友回復:
看起來您忘記將決議的 Json 分配給變數:
let select = document.getElementById('select')
let data = JSON.parse(localStorage.getItem('array'))
for(let entry of data) {
select.add(new Option(entry))
}
不是 100% 確定它是否有效但應該有效。
uj5u.com熱心網友回復:
您可以使用點符號呼叫會話和本地存盤。下面的片段顯示了這一點。但是,這里的代碼片段是沙盒的,無法寫入。因此,為了演示如何從陣列中填充選擇元素,我使用了一個try..catch塊,因此當它出錯時,它至少會使用原始array變數填充選擇選項。
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>
如果您將其復制/粘貼到瀏覽器控制臺中,您可以看到它可以使用點表示法進行設定和呼叫
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);
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/459026.html
標籤:javascript html dom
