Javascript/jQuery-将项推送到数组并从数组中移除

Javascript/jQuery-将项推送到数组并从数组中移除,javascript,jquery,arrays,checkbox,Javascript,Jquery,Arrays,Checkbox,目前,我有一个分布在多个页面上的复选框列表(分页),这些复选框的值需要存储在本地存储中,以便我可以在另一个页面的其他位置列出它们。因此,我尝试将所有这些值存储在一个数组中,并根据是否单击复选框,通过添加/删除值来不断更新该数组 我目前正在使用以下工具: var brochuresList = []; jQuery('.brochure-select-checkbox').on('click', function () { var brochure, brochures

目前,我有一个分布在多个页面上的复选框列表(分页),这些复选框的值需要存储在本地存储中,以便我可以在另一个页面的其他位置列出它们。因此,我尝试将所有这些值存储在一个数组中,并根据是否单击复选框,通过添加/删除值来不断更新该数组

我目前正在使用以下工具:

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);
    });
var手册列表=[];
jQuery(“.手册选择复选框”).on('单击',函数(){
风险值手册,手册=[];
jQuery(“.手册选择复选框”)。每个(函数(){
宣传册={id:jQuery(this.attr('id'),选中:jQuery(this.prop('checked'),值:jQuery(this.val()};
宣传册。推送(宣传册);
});
setItem(“手册”,JSON.stringify(手册));
对于(变量i=0;i<手册长度;i++){
if(jQuery(“#”+手册[i].id).is(“:checked”)&&!手册列表.includes(手册[i].value)){
宣传册列表.push(宣传册[i].value);
}else(!jQuery('#'+手册[i].id).is(':checked')){
var索引=手册列表.indexOf(手册[i].值);
手册列表。拼接(索引,1);
} 
}
控制台日志(手册列表);
});

然而,我似乎有一些奇怪的行为。在所有复选框都未选中的情况下,控制台打印一个空数组,这是正确的。如果单击列表中的第一个复选框,控制台仍然返回一个空数组,这是错误的。如果我单击另一个复选框,我会在数组中得到两个正确的复选框。有人能从上面看出我错在哪里吗

这是我的尝试。您的问题不清楚如何处理复选框上的重复值。我只是假设您希望选中和取消选中与您正在单击的成员具有相同值的每个成员

此外,我无法在此代码段上测试localstorage,它发出了一个错误

希望这对你有帮助

var手册列表=[];
jQuery('.principal select checkbox')。在('click',function()上{
小册子={
id:jQuery(this.attr('id'),
选中:jQuery(this).prop('checked'),
值:jQuery(this).val()
};
如果(小册子,已勾选){
if(宣传册列表索引of(宣传册值)=-1){
宣传册列表。推送(宣传册。值);
}
}否则{
手册列表拼接(手册列表索引(手册值),1);
}
jQuery('.principal select checkbox')。每个(函数(){
if(jQuery(this).val()==宣传册.value){
jQuery(this.prop('checked',宣传册.checked));
}
});
//所以代码片段不允许测试这个。
//setItem(“手册列表”,JSON.stringify(手册列表));
控制台日志(手册列表);
});


首先使用
change
而不是
单击
来阅读复选框事件。@Utkanos啊……我只能说这是一个漫长的工作日!谢谢,谢谢你,让我回到正轨!