Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 选中两个或多个复选框时的所有筛选器项目_Javascript_Jquery_Arrays_Filter - Fatal编程技术网

Javascript 选中两个或多个复选框时的所有筛选器项目

Javascript 选中两个或多个复选框时的所有筛选器项目,javascript,jquery,arrays,filter,Javascript,Jquery,Arrays,Filter,我只想使用jquery和javascript制作一个带有复选框数组的过滤器。当只选中一个复选框时效果很好,但当我选中两个或更多复选框时,它不会显示所有div。你能帮我找出我的错误吗。我想通过过滤器阵列进行过滤。我们阵列的名称是FlyList 让FlyList=[{ id:1, 类型:systemi, 航空公司:ata, 飞行时间:04:00, 类别(类型):商业,, }, { id:2, 类型票:charteri, 航空公司:航空旅行, 飞行时间:08:00, 类别(类型):商业,, }, {

我只想使用jquery和javascript制作一个带有复选框数组的过滤器。当只选中一个复选框时效果很好,但当我选中两个或更多复选框时,它不会显示所有div。你能帮我找出我的错误吗。我想通过过滤器阵列进行过滤。我们阵列的名称是FlyList

让FlyList=[{ id:1, 类型:systemi, 航空公司:ata, 飞行时间:04:00, 类别(类型):商业,, }, { id:2, 类型票:charteri, 航空公司:航空旅行, 飞行时间:08:00, 类别(类型):商业,, }, { id:3, 航班号:950, 类型:systemi, 航空公司:塔班, 飞行时间:11:00, 类别(类型):商业,, 价格:30000, 时间:11时, 容量:5, }, { id:4, 类型:systemi, 航空公司:马汉, 飞行时间:14:00, 类型:经济型, }, { id:5, 类型票:charteri, 航空公司:卡斯平, 飞行时间:17:00, 类别(类型):商业,, }, { id:6, 类型票:charteri, 航空公司:卡斯平, 飞行时间:21:00, 类型:经济型, }, ]; 函数customFilterlist、字段、值{ let fill=list.filteritem=>{ 如果typeoffilter==='Object'{ value.foreachval=>{ 如果项目[字段]==值{ 返回项[字段]==值 } }; } 返回项[字段]==值 }; 控制台。日志填充; } 让filtercheckbox=document.queryselectoral.customCheck'; FilterCheckBox.forEachcheckbox=>checkbox.addEventListener'change',e=>{ e、 防止违约; 让filterTypeElement=findFilterTypeElemente.target; if filterTypeElement{ let field=filterTypeElement.getAttribute'data-field'; 设val=e.target.value; console.logfield,val; customFilterFlyList,字段,val; } }; 函数getParentSell,parentSelector/*可选*/{ //如果未定义parentSelector,则会一直冒泡到*文档* 如果parentSelector==未定义{ parentSelector=文档; } var父项=[]; var p=el.parentNode; 而p&&p!==parentSelector | | p.parentNode{ VarO=p; parents.pusho; p=o.parentNode; } parents.pushparentSelector;//按下要停止的parentSelector 返回父母; } 函数findFilterTypeElementel{ var结果=null; var parents=getParentsel; parents.forEachitem=>{ 如果hasClassitem,'filter_type'&&result==null{ 结果=项目; } }; 返回结果; } 函数hasClasselement,className{ 返回''+element.className+''.indexOf'+className+'>-1; } 车票类型 各种票 systemi 查特里 航空公司 所有航空公司 آتا ایرتور تابان 弗兰斯 酋长 迪拜 类类型 所有类别类型 经济的 贸易的 飞行时间 全飞行时间 04:00-08:00 08:00-11:00 11:00-14:00 14:00-17:00 17:00-21:00 21:00-24:00
您有两个错误,1您没有从customFilter返回新数组,2您没有将其传递到下一个复选框。所以您需要将FlyList保存在temp变量名中,并对其进行过滤,然后使用函数中的值进行更新

function customFilter(list, field, value){

    return list.filter(item=> {
            if(typeof(filter) === 'Object'){
                value.foreach(val => {
                    if (item[field] === value){
                        return item[field] === value

                    }
                });
            }
            return item[field] === value
        });
}
function checkedInputs() {
    return [...document.querySelectorAll('.customCheck')].filter((c) => c.checked);
}


let filterCheckboxes = document.querySelectorAll('.customCheck');

filterCheckboxes.forEach(checkbox =>checkbox.addEventListener('change' , (e) =>{
    e.preventDefault();
    // you need each checkbox on each change
    var checkboxes = checkedInputs();
    var filteredList = FlyList;
    checkboxes.forEach(checkbox => {
       let filterTypeElement = findFilterTypeElement(checkbox);
       if (filterTypeElement) {
         let field = filterTypeElement.getAttribute('data-field');
         let val = e.target.value;
         console.log(field,val);
         filteredList = customFilter(filteredList, field , val);
       }
    });
}));

过滤规则是什么?显示任何匹配项还是仅显示所有匹配项?还不清楚如何使用FilterItems请仅在浏览器中运行完整代码时使用堆栈片段,否则请使用{}按钮或带有4个空格的缩进。谢谢您的回答。但是
它给了我们三个错误。未捕获引用错误:querySelector没有在checkedInputs函数中定义。js:1013在HTMLLabelElement.checkbox.addEventListener函数中。js:1022@سعیدم㶉دی啊,很抱歉它应该是document.querySelector,我的坏函数。js:1008未捕获类型错误:document.querySelector。。。不是一个函数或者它的返回值在checkedInputs functions.js:1008在HTMLLabelElement.checkbox.addEventListener functions.js:1017@سعیدماددی从代码中我了解到,您有类过滤器类型为checkbox的父项。这是真的吗?它也应该是QuerySelector,就像你的代码和过滤器一样,而不是map。如果QuerySelector中仍然存在错误,则只需从查询中删除.filter\u类型,使选择器与代码中的选择器相同即可工作,当然,如果原始代码中没有该错误。