我有一些<input value=name type=checkbox>
,其值必须是持久的。所以我在Cookies中存储了每个值的值,并且我写了一个函数,它必须在页面准备好后恢复值。
保存cookie的功能是:
function setAllCookies() {
var checkboxs = $("#divwheretheinputsare input");
for (i in checkboxs)
Cookies.set(checkboxs[i].value,checkboxs[i].checked);
}
恢复它们的功能是:
function readAllCookies() {
var checkboxs = $("#divwheretheinputsare input");
for (i in checkboxs) {
var nom = checkboxs[i].value;
var value = Cookies.get(nom);
$("##divwheretheinputsare input[value='" + nom + "']").prop("checked", value);
//Also tried $("##divwheretheinputsare input[value='" + nom + "']")[0].checked = value;
}
}
我可以确认Cookies以正确的名称存储,并且两个函数完全执行。通过调试,我检测到这一点:当行$(“## divwheretheinputsare input [value ='”+ nom +“']”)。prop(“checked”,value)被执行时,复选框总是被检查,无论是如果值为false。如果我在控制台中执行该确切的行,则复选框会正确更改...
此外,备用代码行在控制台中正确执行,但在它删除的函数中:“TypeError:$(...)[0]未定义”。
答案 0 :(得分:0)
正如charlieftl提到的那样,你的值是作为字符串(“true”或“false”)而不是(true或false),并且prop(“checked”,value)字段中的任何值都将被取消是的。
尝试:
var value = (Cookies.get(nom) == 'true');
这会将您的值设置为布尔值而不是字符串。