我想要做的是当用户点击“提交”而不覆盖以前的状态时,将复选框的状态保存到localstorage中。因此localstorage可能具有“true,false,false,true ......”等值。如果我在新会话中提交表单,那么我的本地存储将覆盖复选框的状态。
JS:
document.addEventListener("deviceready",onDeviceReady,false);
function onDeviceReady() {
document.getElementById("xbutton").addEventListener("click",savecheck,false); }
function savecheck(){
var checkb = document.getElementById("MedA");
localStorage.setItem("MedA", checkb.checked);
}
HTML:
<form>
<div id='medA'>
<input type="checkbox" id="MedA" name="Med" value="A">Medication A
</div>
<input id="xbutton" type="button" onClick="savecheck()" value="Submit">
</form>
答案 0 :(得分:0)
你可以这样做:
function savecheck() {
var data = [];
data[0] = document.getElementById("MedA").checked;
localStorage.setItem("MedA", JSON.stringify(data));
}
答案 1 :(得分:0)
您可以获取当前的localstorage项目:
var oldItem = localStorage.getItem("MedA");
var newItem = oldItem +", " + String(checkb.checked);
localStorage.setItem(newItem, checkb.checked);
也许可以用更多的逻辑来处理逗号(例如,如果原始的本地存储变量是空的,则没有逗号)。
答案 2 :(得分:0)
这是一种方法:
function savecheck() {
var checkb = document.getElementById("MedA");
var medAHistory = JSON.parse(localStorage.getItem('MedA') || "[]");
medAHistory.push(checkb.checked);
localStorage.setItem("MedA", JSON.stringify(medAHistory));
}
要记住的是localStorage只能存储字符串值。 这意味着,您需要在存储到localStorage时将任何对象或数组序列化为字符串,然后在从localStorage读回它时反序列化(解析)它。
注意:如果您之前已在本地存储中保存了“MedA”项,则需要在将其(已解析的)表示从简单值更改为数组时将其删除。