我正在嘗試制作一個在用戶按下按鈕時保存資料的表單。
<form>
<label for="name">Name:</label>
<input type="text" id="name" name="name">
<label for="age">Age:</label>
<input type="text" id="age" name="age">
<button type="button" onclick="SaveData()">Save Data</button>
<button type="button" onclick="LoadData()">Load Data</button>
</form>
這是我的嘗試。當我嘗試加載資料時,它只是空白。
var name = document.getElementById("name").value;
function SaveData() {
localStorage.setItem("name", name);
}
function LoadData() {
var data = localStorage.getItem("name");
alert(data);
}
uj5u.com熱心網友回復:
您需要檢查#name函式內部的值。
function SaveData() {
var name = document.getElementById("name").value;
localStorage.setItem("name", name);
}
uj5u.com熱心網友回復:
<form onsubmit="onSave()">
<label for="name">Name:</label>
<input type="text" id="name" name="name">
<label for="age">Age:</label>
<input type="text" id="age" name="age">
<input type="submit" value="Save Data" />
<button type="button" onclick="LoadData()">Load Data</button>
</form>
function onSave(event){
const { currentTarget } = event;
const data = new FormData(currentTarget)
Array.from(data.entries()).forEach(function([key, value]) {
window.localStorage.setItem(key, value);
})
}
或者
<form id="form">
<label for="name">Name:</label>
<input type="text" id="name" name="name">
<label for="age">Age:</label>
<input type="text" id="age" name="age">
<button type="button" onclick="SaveData()">Save Data</button>
<button type="button" onclick="LoadData()">Load Data</button>
</form>
const form = document.getElementById("form")
function onSave(event){
const data = new FormData(form)
Array.from(data.entries()).forEach(function([key, value]) {
window.localStorage.setItem(key, value);
})
}
檢查這個以獲取更多資訊
uj5u.com熱心網友回復:
一種可行的方法是同時使用FormData和JSON.stringify以便將所有表單的活動資料一次存盤在單個表單相關/特定鍵下。
// local storage mock due to SO blocking
// built-in `localStorage` by privacy settings.
const localStorage = {
storage: new Map,
setItem(key, value) {
this.storage.set(key, value);
},
getItem(key) {
return this.storage.get(key) ?? null;
}
};
function saveData(evt) {
evt.preventDefault();
const elmForm = evt.currentTarget;
const storageKey = elmForm.dataset.storableForm;
const activeData = Object.fromEntries(
Array.from(
new FormData(elmForm).entries()
)
);
localStorage.setItem(
storageKey,
JSON.stringify(activeData)
);
// debug logging.
console.log({
[storageKey]: localStorage.getItem(storageKey)
});
}
function loadData(evt) {
const elmForm = evt.currentTarget.form;
const storageKey = elmForm.dataset.storableForm;
const storageData = JSON.parse(
localStorage.getItem(storageKey)
);
Object
.entries(storageData ?? {})
.forEach(([key, value]) => {
elmForm.elements[key].value = value;
});
// debug logging.
console.log({ storageData });
}
document
.querySelectorAll('[data-storable-form]')
.forEach(elmNode => {
elmNode
.addEventListener('submit', saveData);
elmNode
.querySelector('[data-load]')
.addEventListener('click', loadData);
});
body { margin: 0; zoom: .95; }
.as-console-wrapper { min-height: 85%!important; }
<form data-storable-form="form-data-A">
<label for="name">Name:</label>
<input type="text" id="name" name="name">
<label for="age">Age:</label>
<input type="text" id="age" name="age">
<button type="submit">Save Data</button>
<button type="reset" onclick="console.clear();">Clear Data</button>
<button type="button" data-load>Load Data</button>
</form>
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/345926.html
標籤:javascript html 形式 本地存储
上一篇:為字串添加多個后綴
