将数据从对象返回到表单

时间:2020-04-01 01:37:33

标签: javascript forms checkbox google-chrome-extension

在Chrome扩展程序中,我保存了用户输入(选中的复选框)-它的工作原理如下:

function save_checkboxes() {
    const form = document.forms['cbx'];
    const data = Object.fromEntries(new FormData(form).entries());
/*     console.log(data); */
    chrome.storage.sync.set({
        savedCheckboxes: data
    }, function () {
/*         console.log(data); */
    });
}
document.getElementById("save_checkboxes").addEventListener("click", save_checkboxes);

比我想还原保存的数据,因此用户可以重新获得选中的复选框,直到进行新选择为止。我以这种方式尝试:

function restore_checkboxes() {
    chrome.storage.sync.get(['savedCheckboxes'], function (entries) {
console.log(Object.entries(entries.savedCheckboxes));

/*stumble, stumble, stumble*/

    )}
    }

console.log已经显示了一个带有保存值的数组,这些值是已选中复选框的ID,如屏幕截图所示:

enter image description here

我的问题:如何将值放回到先前选中的复选框中?

1 个答案:

答案 0 :(得分:0)

对于有人需要的情况,有两个用于保存和恢复复选框的功能:

function save_checkboxes() {
    const form = document.forms['cbx'];
    const data = Object.fromEntries(new FormData(form).entries());

    chrome.storage.sync.set({
        savedCheckboxes: data
    }, function () {});
}
document.getElementById("save_checkboxes").addEventListener("click", save_checkboxes);

function restore_checkboxes() {
    chrome.storage.sync.get(['savedCheckboxes'], function (entries) {

        for (const[key, val]of Object.entries(entries.savedCheckboxes)) {

            const input = document.forms['cbx'].elements[key];
            switch (input.type) {
            case 'checkbox':
                input.checked = !!val;
                break;
            default:
                input.value = val;
                break;
            }
        }
    });
}
document.addEventListener('DOMContentLoaded', restore_checkboxes);