3

我正在尝试为 Chrome 扩展创建一个选项页面。第一部分将值设置为本地存储。检查是否为真,取消检查是否为假。如果用户在其他时间回来,第二部分应该更新复选框,并且设置将应用于复选框。

我的问题是,当用户刷新或关闭窗口并返回时,复选框永远不会选中,但本地存储会更改为 true 或 false。如何使用户可以选中该框,并且当用户稍后返回或刷新页面时它将保留。

    setStatus = document.getElementById('stat');
    setStatus.onclick = function() {
        if(document.getElementById('stat').checked) {
            localStorage.setItem('stat', "true");
        } else {
            localStorage.setItem('stat', "false");
        }
    }


getStstus = localStorage.getItem('stat');
    if (getStstus == "true") {
        console.log("its checked");
        document.getElementById("stat").checked;
    } else {
        console.log("its not checked");
    }
4

3 回答 3

5

改变:

document.getElementById("stat").checked;

至:

document.getElementById("stat").setAttribute('checked','checked');

会解决这个问题。由于添加.checked时,实际上只是检查复选框是否选中。

你也可以这样做:

document.getElementById("stat").checked=true;   

哪个做同样的事情。


请注意,您需要更改第二个 document.getElementById("stat").checked.

getStstus = localStorage.getItem('stat');
    if (getStstus == "true") {
        console.log("its checked");
        document.getElementById("stat").setAttribute('checked','checked');
    } else {
        console.log("its not checked");
    }​

JsFiddle 示例

于 2012-07-27T00:40:12.307 回答
3

您需要在 JavaScript中将checked 属性实际设置为 true。

利用:

document.getElementById("stat").checked = true;

代替:

document.getElementById("stat").checked;

试试看!

于 2012-07-27T00:39:46.283 回答
2

我假设您说您的存储正在工作,但您需要使用 Javascript 选中该框。在这种情况下,请使用:

document.getElementById("stat").checked=true;

代替

document.getElementById("stat").checked;

参考: http ://www.w3schools.com/jsref/prop_checkbox_checked.asp

于 2012-07-27T00:39:30.603 回答