Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.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 jQuery表筛选器排序不正确_Javascript_Jquery_Html - Fatal编程技术网

Javascript jQuery表筛选器排序不正确

Javascript jQuery表筛选器排序不正确,javascript,jquery,html,Javascript,Jquery,Html,我一直在尝试使用我在上找到的以下内容(在本例中对其进行了一些修改)。甚至不确定我是否正确发布了此代码。。。我想最好只是看看小提琴 { filters[col] = text; $(table).find('tr').each(function(i){ $(this).data('passed', true); }); for(index in filters) { if(filters[index] !== 'any')

我一直在尝试使用我在上找到的以下内容(在本例中对其进行了一些修改)。甚至不确定我是否正确发布了此代码。。。我想最好只是看看小提琴

{
    filters[col] = text;

    $(table).find('tr').each(function(i){
        $(this).data('passed', true);
    });

    for(index in filters)
    {
        if(filters[index] !== 'any')
        {
            $(table).find('tr td:nth-child('+index+')').each(function(i){
                if($(this).text().indexOf(filters[index]) > -1 && $(this).parent().data('passed'))
                {
                    $(this).parent().data('passed', true);
                }
                else
                {
                    $(this).parent().data('passed', false);
                }
            });
        }
    }

    $(table).find('tr').each(function(i){
        if(!$(this).data('passed'))
        {
            $(this).hide();
        }
        else
        {
            $(this).show();
        }
    });
}
基本上,我将有一个表,比如说,100行,每行将有一列,其中有一个计时器值,例如10分钟或15分钟。当用户单击适当的“自定义过滤器”如10分钟时,该表将被过滤,仅在10分钟内显示所有条目。到目前为止,它的效果是100%

但是,当一个用户可能过滤任何一个数字时,比如5分钟或1分钟,它会抛出,好的,所有的东西,例如用户过滤5分钟,现在它抛出5分钟,15分钟,45分钟等等

在本例中,10、15、45和59分钟的过滤器工作正常。5分钟和9分钟按钮过滤错误,您将在示例中看到我的意思

是否有任何方法可以纠正这种情况,以便在单击5分钟筛选器时,它只加载值为5分钟的表列?我在另一把小提琴上看到过类似的东西(我现在找不到),我认为它被称为正则表达式,而不是索引。。。这是为了表中的搜索函数,但它起作用了


如果您需要更多信息或更好的描述,请告诉我。

这里有一个更简单的方法,它使用
filter()
eq()
,只循环行一次

function apply_filter(table, col, text) {
  var $rows = $(table).find('tr');
  if (text === 'any') {
    $rows.show();
  } else {
    // hide all rows then filter the ones to show
    $rows.hide().filter(function() {
      return $(this).children().eq(col - 1).text().trim() === text;
    }).show();
  }
}

这里有一个简单得多的方法,它使用
过滤器()
eq()
,只循环行一次

function apply_filter(table, col, text) {
  var $rows = $(table).find('tr');
  if (text === 'any') {
    $rows.show();
  } else {
    // hide all rows then filter the ones to show
    $rows.hide().filter(function() {
      return $(this).children().eq(col - 1).text().trim() === text;
    }).show();
  }
}

谢谢你,查理,这正是我所需要的!非常感谢。您好@charlietfl上述代码如前所述工作完美,但我已经到了过滤器太多的地步。假设我想将一个筛选器分组为包含2个值,例如,当您单击按钮时,全部显示“5分钟”和“10分钟”值,而不是仅显示“5分钟”。修改确定筛选器内返回内容的逻辑()。可以创建选择数组遗憾的是,我对编码的基本了解还不多。一般来说,我为了完成这项工作而拼凑起来的零碎东西充其量是可笑的,甚至不能让数组正常工作。我会继续寻找和尝试。谢谢你的建议。谢谢你,查理,这正是我所需要的!非常感谢。您好@charlietfl上述代码如前所述工作完美,但我已经到了过滤器太多的地步。假设我想将一个筛选器分组为包含2个值,例如,当您单击按钮时,全部显示“5分钟”和“10分钟”值,而不是仅显示“5分钟”。修改确定筛选器内返回内容的逻辑()。可以创建选择数组遗憾的是,我对编码的基本了解还不多。一般来说,我为了完成这项工作而拼凑起来的零碎东西充其量是可笑的,甚至不能让数组正常工作。我会继续寻找和尝试。谢谢你的建议。