Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.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_Select_Drop Down Menu_Filter - Fatal编程技术网

Javascript 按下拉值对表格排序(简化我的代码)

Javascript 按下拉值对表格排序(简化我的代码),javascript,jquery,select,drop-down-menu,filter,Javascript,Jquery,Select,Drop Down Menu,Filter,我有一张桌子。我希望用户能够通过在给定下拉列表中选择的选项筛选表。我让它工作,但它很混乱,很难添加新行(抱歉,无法在JSFIDLE中工作)。任何简化的代码都将不胜感激。另外,如果这段代码可以限制为只过滤某个表,那么我就可以有许多表和许多下拉列表。如果这可以在没有行ID的情况下完成,那就更好了。谢谢我的表格/html: <table> <tr id="catRow"> <td id="cats">cats</td> </tr> <

我有一张桌子。我希望用户能够通过在给定下拉列表中选择的选项筛选表。我让它工作,但它很混乱,很难添加新行(抱歉,无法在JSFIDLE中工作)。任何简化的代码都将不胜感激。另外,如果这段代码可以限制为只过滤某个表,那么我就可以有许多表和许多下拉列表。如果这可以在没有行ID的情况下完成,那就更好了。谢谢我的表格/html:

<table>
<tr id="catRow">
  <td id="cats">cats</td>
</tr>
<tr id="catRow2">
  <td id="cats">cats</td>
</tr>
<tr id="dogRow">
  <td id="dogs">dogs</td>
</tr>
<tr id="birdRow">
  <td id="birds">birds</td>
</tr>
<tr>
  <td id="dogRow2">dogs</td>
</tr>
</table>

                <select id="selectFilter">
                <option id="sel_All">Select...</option>
                <option id="selCats">Cats</option>
                <option id="selDogs">Dogs</option>
                <option id="selBirds">Birds</option>
                </select>
   <script type='text/javascript'> 
    $(window).load(function(){
     $('select').change(function() {

  if($('#selectFilter option:selected').attr('id') == "sel_All" || $('#selectFilter option:selected').attr('id') == "sel_All"){$('#catRow').show();$('#catRow2').show();$('#dogRow').show();$('#dogRow2').show();$('#birdRow').show();}

  if($('#selectFilter option:selected').attr('id') == "selCats" || $('#selectFilter option:selected').attr('id') == "selCats"){$('#catRow').show();$('#catRow2').show();$('#dogRow').hide();$('#dogRow2').hide();$('#birdRow').hide();}

  if($('#selectFilter option:selected').attr('id') == "selDogs" || $('#selectFilter option:selected').attr('id') == "selDogs"){$('#catRow').hide();$('#catRow2').hide();$('#dogRow').show();$('#dogRow2').show();$('#birdRow').hide();}

  if($('#selectFilter option:selected').attr('id') == "selBirds" || $('#selectFilter option:selected').attr('id') == "selBirds"){$('#catRow').hide();$('#catRow2').hide();$('#dogRow').hide();$('#dogRow2').hide();$('#birdRow').show();}
    </script>

猫
猫
狗
鸟
狗
选择。。。
猫
狗
鸟
代码:

<table>
<tr id="catRow">
  <td id="cats">cats</td>
</tr>
<tr id="catRow2">
  <td id="cats">cats</td>
</tr>
<tr id="dogRow">
  <td id="dogs">dogs</td>
</tr>
<tr id="birdRow">
  <td id="birds">birds</td>
</tr>
<tr>
  <td id="dogRow2">dogs</td>
</tr>
</table>

                <select id="selectFilter">
                <option id="sel_All">Select...</option>
                <option id="selCats">Cats</option>
                <option id="selDogs">Dogs</option>
                <option id="selBirds">Birds</option>
                </select>
   <script type='text/javascript'> 
    $(window).load(function(){
     $('select').change(function() {

  if($('#selectFilter option:selected').attr('id') == "sel_All" || $('#selectFilter option:selected').attr('id') == "sel_All"){$('#catRow').show();$('#catRow2').show();$('#dogRow').show();$('#dogRow2').show();$('#birdRow').show();}

  if($('#selectFilter option:selected').attr('id') == "selCats" || $('#selectFilter option:selected').attr('id') == "selCats"){$('#catRow').show();$('#catRow2').show();$('#dogRow').hide();$('#dogRow2').hide();$('#birdRow').hide();}

  if($('#selectFilter option:selected').attr('id') == "selDogs" || $('#selectFilter option:selected').attr('id') == "selDogs"){$('#catRow').hide();$('#catRow2').hide();$('#dogRow').show();$('#dogRow2').show();$('#birdRow').hide();}

  if($('#selectFilter option:selected').attr('id') == "selBirds" || $('#selectFilter option:selected').attr('id') == "selBirds"){$('#catRow').hide();$('#catRow2').hide();$('#dogRow').hide();$('#dogRow2').hide();$('#birdRow').show();}
    </script>

$(窗口)。加载(函数(){
$('select').change(函数(){
if($('selectFilter option:selected').attr('id')==“sel#u All”|$('selectFilter option:selected').attr('id')==“sel#All”){$('catRow').show();$('catRow2').show();$('dogRow').show()$('dogRow2').show();$)('dogRow2').show()。$)('
如果($('selectFilter option:selected').attr('id')==“selCats”|$('selectFilter option:selected').attr('id')==“selCats”){$('catRow').show();$('catRow2').show();$('dogRow').hide()$('dogRow2').hide()).hide()('birdRow').hide())
如果($('selectFilter option:selected').attr('id')==“selDogs”|$('selectFilter option:selected').attr('id')==“selDogs”){$('catRow').hide();$('catRow2').hide();$('dogRow').show()$('dogRow2').show()。$('dogRow2').show()).show()('birdRow').hide())
如果($('selectFilter option:selected').attr('id')==“selBirds”|$('selectFilter option:selected').attr('id')==“selBirds”){$('catRow').hide()$('catRow2').hide();$('dogRow').hide()$('dogRow2').hide()$).hide()('dogRow2').hide()。$('birdRow').show())
您应该检查一下,它内置了这种过滤功能(fnFilter在中)

一开始它可能有点像一条学习曲线,但最终会更加灵活。

你应该看看,它内置了这种过滤功能(fnFilter在中)


一开始可能有点像学习曲线,但最终会更加灵活。

您可以这样更改html标记

<table id='animal'>
  <tr class="cat">
    <td>cats</td>
  </tr>
  <tr class="cat">
    <td>cats</td>
  </tr>
  <tr class="dog">
    <td>dogs</td>
  </tr>
  <tr class="bird">
    <td>birds</td>
  </tr>
  <tr class='dog'>
    <td>dogs</td>
  </tr>
</table>
<select id="selectFilter">
  <option value=''>Select...</option>
  <option value='cat'>Cats</option>
  <option value='dog'>Dogs</option>
  <option value='bird'>Birds</option>
</select>

您可以这样更改html标记

<table id='animal'>
  <tr class="cat">
    <td>cats</td>
  </tr>
  <tr class="cat">
    <td>cats</td>
  </tr>
  <tr class="dog">
    <td>dogs</td>
  </tr>
  <tr class="bird">
    <td>birds</td>
  </tr>
  <tr class='dog'>
    <td>dogs</td>
  </tr>
</table>
<select id="selectFilter">
  <option value=''>Select...</option>
  <option value='cat'>Cats</option>
  <option value='dog'>Dogs</option>
  <option value='bird'>Birds</option>
</select>

我已经重构了你的小提琴:

通过利用CSS类和“value”等内置属性,我们可以轻松地使此代码更通用

对于此HTML:

<table id="animals">
    <tr class="cat">
        <td>Cat 1</td>
    </tr>
    <tr class="cat">
        <td>Cat 2</td>
    </tr>
    <tr class="dog">
        <td>Dog 1</td>
    </tr>
    <tr class="cat">
        <td>Cat 3</td>
    </tr>
    <tr class="bird">
        <td>Bird 1</td>
    </tr>
    <tr class="cat">
        <td>Cat 4</td>
    </tr>
    <tr class="dog">
        <td>Dog 2</td>
    </tr>
</table>

<select id="selectFilter">
    <option>Select...</option>
    <option value="cat">Cats</option>
    <option value="dog">Dogs</option>
    <option value="bird">Birds</option>
</select>

编辑:这种方法无法处理的一种情况是让您能够再次显示所有行。我将把它作为练习留给您,但这里有一个提示:您可以读取
$(this).val()的值,如果没有值,则显示所有行,而不是过滤它们。

我已经重构了您的小提琴:

通过利用CSS类和“value”等内置属性,我们可以轻松地使此代码更通用

对于此HTML:

<table id="animals">
    <tr class="cat">
        <td>Cat 1</td>
    </tr>
    <tr class="cat">
        <td>Cat 2</td>
    </tr>
    <tr class="dog">
        <td>Dog 1</td>
    </tr>
    <tr class="cat">
        <td>Cat 3</td>
    </tr>
    <tr class="bird">
        <td>Bird 1</td>
    </tr>
    <tr class="cat">
        <td>Cat 4</td>
    </tr>
    <tr class="dog">
        <td>Dog 2</td>
    </tr>
</table>

<select id="selectFilter">
    <option>Select...</option>
    <option value="cat">Cats</option>
    <option value="dog">Dogs</option>
    <option value="bird">Birds</option>
</select>

编辑:有一种情况没有处理,那就是给你一种再次显示所有行的方法。我将把它作为练习留给你,但这里有一个提示:你可以读取
$(this.val()
)的值,如果没有值,则显示所有行,而不是过滤它们。

请查找重构代码“下面是代码片段

html代码:

<select id="selectFilter">
       <option id="all">Select...</option>
       <option id="cats">Cats</option>
       <option id="dogs">Dogs</option>
       <option id="birds">Birds</option>
</select>
<table border="1">
  <tr class="all cats">
    <td>cats</td>
 </tr>
 <tr class="all cats">
    <td>cats 2</td>
 </tr>
 <tr class="all dogs">
    <td>dogs</td>
 </tr>
 <tr class="all birds">
    <td>birds</td>
 </tr>

希望这能帮助您轻松高效地维护代码。

请在此处找到重构代码“”,代码片段如下所示

html代码:

<select id="selectFilter">
       <option id="all">Select...</option>
       <option id="cats">Cats</option>
       <option id="dogs">Dogs</option>
       <option id="birds">Birds</option>
</select>
<table border="1">
  <tr class="all cats">
    <td>cats</td>
 </tr>
 <tr class="all cats">
    <td>cats 2</td>
 </tr>
 <tr class="all dogs">
    <td>dogs</td>
 </tr>
 <tr class="all birds">
    <td>birds</td>
 </tr>


希望这能帮助您轻松高效地维护代码。

我不能使用datatables。这很神奇,但太重了。我必须围绕它重建整个网站。相信我,我已经尝试过了。太糟糕了。你是说太重了,因为它使用起来很复杂吗?你能详细说明你正在构建什么吗?我有下面的解决方案。我正在修复一个非常破碎的网站,这是一种修补工作。任何新的脚本都会抛开一切,所以我需要简单的解决方案。我不能使用数据表。这很神奇,但太重了。我必须围绕它重建整个网站。相信我,我试过了。太糟糕了。你是说太重了,因为它使用起来很复杂吗?你能详细说明你是什么吗构建?我得到了下面的解决方案。我正在修复一个非常破碎的站点,这是一种修补工作。任何新脚本都会抛开一切,所以我需要简单的解决方案。等等..你想排序或筛选吗?我可能误解了你可能想链接到一个正在工作的JSFIDLE。等等..你想排序或筛选吗?我可能误解了你可能想只需记住,ID在整个文档中应该是唯一的,而类在具有相同类型或“类”的任何地方都可以重用--内容!呃,试图在页面上实现它,它清除了我的整个表。:/对于这种情况,这不是一个解决方案。可能是页面上的标记有问题--请检查fiddle以获得一个工作示例。这很好。唯一奇怪的是,如果没有选择筛选器。为什么所有tr都被隐藏?请记住,ID在整个do中应该是唯一的而类在任何具有相同类型或“类”的地方都可以重用--内容!呃,试图在页面上实现它,它清除了我的整个表。:/对于这种情况,这不是一个解决方案。可能是页面上的标记有问题--检查小提琴以获得一个工作示例。这很好。唯一奇怪的是,如果没有选择筛选器。为什么所有tr都被隐藏?它没有进行任何更改。不确定要告诉你什么.@triplethreat77是否将tr
id的
更改为类?确保您的选项也具有正确的值..并始终将这些绑定代码包装在文档中。准备好了吗?如果您感兴趣,另一种筛选情况是:它没有做任何更改。不确定要告诉您什么。@triplethreat77是否更改了tr
id的
到类?确保您的选项也具有正确的值..并始终将这些绑定代码包装在文档中。准备好了吗?如果需要,请使用其他筛选用例