复选框,并尝试在用户返回时为用户保存所有复选框的状态

Checkboxes and trying to save the state of all checkboxes for the user when they return

本文关键字:用户 复选框 保存 状态 返回      更新时间:2023-09-26
function getFormState() {
    var fields = document.getElementsByTagName('form')[0].elements;
    if (fields.length === 0) {
        return;
    };
    for (var i = 0; i <= fields.length - 1; i++) {
        var name = fields[i].getAttribute('name');
        if (document.getElementByTagName('name').checked === true) {
            localStorage.setItem('name', "true");
        } else {
            localStorage.setItem('name', "false");
        }
    }
}
function fillFormState() {
    var fields = document.getElementsByTagName('form')[0].elements;
    if (fields.length === 0) {
        return;
    };
    for (var i = 0; i <= fields.length - 1; i++) {
        var name = fields[i].getAttribute('name');
        getStatus = localStorage.getItem('name'); {
            if (getStatus === "true") {
                console.log("its checked");
                document.getElementByTagName("name").setAttribute('checked', 'checked');
            } else {
                console.log("its not checked");
            }
        }
    }
} // run the below functions when the web page is loadedwindow.onload = function () {
// check if HTML5 localStorage is supported by the browser
if ('localStorage' in window && window['localStorage'] !== null) {
    // get the form state
    getFormState();
    // save the state of the form each X seconds (customizable)
    setInterval('fillFormState()', 1 * 1000);
}
};

但它似乎不起作用。我试图弄清楚为什么。我对javascript不是很有经验,所以这可能很明显。对不起。我在努力。

我猜你的localStorage永远不会因为这个循环而被设置:

for (var i = 0; i <= fields.length - 1; i++) {
    var name = fields[i].getAttribute('name');
    if (document.getElementByTagName('name').checked === true) {
        localStorage.setItem('name', "true");
    } else {
        localStorage.setItem('name', "false");
    }
}

没有document.getElementByTagName,您也在搜索"name"而不是变量name

for (var i = 0; i <= fields.length - 1; i++) {
    var name = fields[i].getAttribute('name');
    if (fields[i].checked === true) { //Check the current field
        localStorage.setItem(name, "true"); //Set the actual name, not "name"
    } else {
        localStorage.setItem(name, "false");
    }
}