Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.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 - Fatal编程技术网

Javascript 显示返回结果计数的函数为';他没有按预期工作

Javascript 显示返回结果计数的函数为';他没有按预期工作,javascript,jquery,Javascript,Jquery,我的jQuery复选框过滤器正常工作: 在复选框窗体下,我想显示结果的数量。默认为7 过滤结果时,它不会显示正确数量的显示结果 你能帮我找出我的错误吗 我对JSFIDLE代码中的行进行了注释,在其中添加了变量n,以实现我想要的结果 $('.category').on('change', function () { var n; //declare variable n var category_list = []; $('#filters :input:checked'

我的jQuery复选框过滤器正常工作:

在复选框窗体下,我想显示结果的数量。默认为7

过滤结果时,它不会显示正确数量的显示结果

你能帮我找出我的错误吗

我对JSFIDLE代码中的行进行了注释,在其中添加了变量n,以实现我想要的结果

$('.category').on('change', function () {
    var n; //declare variable n
    var category_list = [];
    $('#filters :input:checked').each(function () {
        var category = $(this).val();
        category_list.push(category);
    });
    if (category_list.length == 0) {
        $('.resultblock').show();
    } else {
        $('.resultblock').hide();
        });

        $('#count').text(n); // change the results qunatity
    }
});

问题是,如果一个元素包含多个匹配标记,则该元素将递增多次

对于每个元素,最多只能增加一次
n


问题是,如果一个元素包含多个匹配标记,则该元素将递增多次

对于每个元素,最多只能增加一次
n


您正在计算双倍,一个非常简单的修复方法是在for循环中添加一个可见性检查,如下所示

for (i = 0; i < category_list.length; ++i) {
    if (itemArray.indexOf(category_list[i]) >= 0 && !$(self).is(":visible")) {
        $(self).show();
        n=n+1; //increase the value of n if found a result
    }
}

您正在计算双倍,一个非常简单的修复方法是在for循环中添加一个可见性检查,如下所示

for (i = 0; i < category_list.length; ++i) {
    if (itemArray.indexOf(category_list[i]) >= 0 && !$(self).is(":visible")) {
        $(self).show();
        n=n+1; //increase the value of n if found a result
    }
}

您的计数是对每个搜索的结果进行梳理。您需要考虑重复项。您的计数是对每个单独搜索的结果进行梳理。你需要解释重复的内容。谢谢你的回答。它现在可以工作,但当选中所有复选框,然后取消选中所有复选框时,它不会显示7@EducateYourself我的旁注中有解决办法;)也就是说,这个答案可能更“干净”mine@EducateYourself请参阅更新。我重构了代码并缩短了它。谢谢你的回答。它现在可以工作,但当选中所有复选框,然后取消选中所有复选框时,它不会显示7@EducateYourself我的旁注中有解决办法;)也就是说,这个答案可能更“干净”mine@EducateYourself请参阅更新。我重构了代码并缩短了它。
for (i = 0; i < category_list.length; ++i) {
    if (itemArray.indexOf(category_list[i]) >= 0 && !$(self).is(":visible")) {
        $(self).show();
        n=n+1; //increase the value of n if found a result
    }
}
if (category_list.length == 0) {
        $('.resultblock').show();
        $('#count').text($('.resultblock').length);
    }