【发布时间】:2018-02-15 06:48:03
【问题描述】:
我目前有一个分布在多个页面上的复选框列表(分页),其值需要存储在本地存储中,以便我可以在另一个页面的其他位置列出它们。因此,我尝试将所有这些值存储在一个数组中,并通过添加/删除值来不断更新该数组,具体取决于是否已单击复选框。
我目前正在使用以下内容:
var brochuresList = [];
jQuery('.brochure-select-checkbox').on('click', function () {
var brochure, brochures = [];
jQuery('.brochure-select-checkbox').each(function () {
brochure = {id: jQuery(this).attr('id'), checked: jQuery(this).prop('checked'), value: jQuery(this).val()};
brochures.push(brochure);
});
localStorage.setItem("brochures", JSON.stringify(brochures));
for (var i = 0; i < brochures.length; i++) {
if( jQuery('#' + brochures[i].id).is(':checked') && !brochuresList.includes(brochures[i].value) ){
brochuresList.push(brochures[i].value);
} else (!jQuery('#' + brochures[i].id).is(':checked')) {
var index = brochuresList.indexOf(brochures[i].value);
brochuresList.splice(index, 1);
}
}
console.log(brochuresList);
});
但是我似乎有一些奇怪的行为。在所有复选框“未选中”的情况下,控制台打印一个空数组,这是正确的。如果我然后单击列表中的第一个复选框,控制台仍然返回一个空数组 - 这是错误的。如果我单击另一个复选框,我会在数组中得到两个正确的复选框。谁能在上面看到我哪里出错了?
【问题讨论】:
-
开始使用
change而不是click来读取复选框事件。 -
@Utkanos 啊...我只能说这是漫长的一天工作!谢谢。
标签: javascript jquery arrays checkbox