2017-04-25 44 views
1
  1. 现在的表是动态的,所以很多行能来,但下拉是静态
  2. 下拉第2个和第3个值苹果和Orange只能来表第2列和下拉4日和5日值“食”和“烂”只可能在第4列
  3. 所有的代码应该在功能viewChange()现在

在当Apple被选中所有具有第二列值的行与苹果将显示等等。隐藏和显示基于一个下拉的值表的行 - jQuery的

选择 - 全部将再次显示整个表格

如何编写函数?

function ViewChange() 
 
{ 
 

 
var selectedViewName = $('#dropDown :selected').val(); 
 
    switch (selectedViewName) 
 
    { 
 

 
     
 

 
     case("1"): 
 
      selectedViewName="ALL"; 
 
      break; 
 
     case("2"): 
 
      selectedViewName = "Apple"; 
 
      break; 
 
     case("3"): 
 
      selectedViewName = "Orange"; 
 
      break; 
 
     case("4"): 
 
      selectedViewName = "Fresh"; 
 
      break 
 
     case("5"): 
 
      selectedViewName = "Rotten"; 
 
      break 
 

 
}
<select id="dropDown" onchange="ViewChange()"><option value="1">All</option> 
 
    <option value="2">Apple</option> 
 
    <option value="3">Orange</option> 
 
    <option value="4">Fresh</option> 
 
    <option value="5">Rotten</option> 
 
</select> 
 

 
<table id="tableID"> 
 
    <thead> 
 
    <tr> 
 
     <th>Name</th> 
 
     <th>Fruit type</th> 
 
     <th>place</th> 
 
     <th>state</th> 
 
    </tr> 
 
    </thead> 
 
    <tbody> 
 
    <tr> 
 
     <td>salim groceries</td> 
 
     <td>apple</td> 
 
     <td>nagpur</td> 
 
     <td>fresh</td> 
 
    </tr> 
 
    <tr> 
 
     <td>monalisa groceries</td> 
 
     <td>Apple</td> 
 
     <td>Belapur</td> 
 
     <td>Rotten</td> 
 
    </tr> 
 
    <tr> 
 
     <td>taj groceries</td> 
 
     <td>Orange</td> 
 
     <td>Nasik</td> 
 
     <td>Fresh</td> 
 
    </tr> 
 
    <tr> 
 
     <td>suraj groceries</td> 
 
     <td>Orange</td> 
 
     <td>Goa</td> 
 
     <td>Rotten</td> 
 
    </tr> 
 
    </tbody> 
 
</table>

请看看这个小提琴https://jsfiddle.net/shaswatatripathy/pvxmrL2n/8/

+2

你有一个关于这个代码的问题?我只能看到你的要求列表 –

+0

添加了问题 – tripathy

+0

看看这里http:// stackoverflow。com/questions/35632168/i-want-to-toggle-the-table-rows-filter-based-on-the-text-from-buttons/35639792#35639792 – Alexis

回答

0

function ViewChange($this) { 
 
    var $selectText = $('option:selected', $this).text().toLowerCase(); 
 
    var $val = $($this).val(); 
 

 
    if ($selectText != 'all') { 
 
     $('tr').each(function() { 
 
      if ($(this).find('td').length) { 
 
       var txt = ''; 
 
       if ($val < 4) 
 
        txt = $(this).find('td:eq(1)').text().toLowerCase(); 
 
       else 
 
        txt = $(this).find('td:eq(3)').text().toLowerCase(); 
 

 
       if (txt === $selectText) { 
 
        $(this).show(); 
 
       } 
 
       else { 
 
        $(this).hide(); 
 
       } 
 
      } 
 
     }) 
 
    } 
 
    else { 
 
     $('tr').show(); 
 
    } 
 

 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<select id="dropDown" onchange="ViewChange(this)"><option value="1">All</option> 
 
<option value="2">Apple</option> 
 
<option value="3">Orange</option> 
 
<option value="4">Fresh</option> 
 
<option value="5">Rotten</option> 
 
</select> 
 

 
<table id="tableID"> 
 
    <thead> 
 
     <tr> 
 
      <th>Name</th> 
 
      <th>Fruit type</th> 
 
      <th>place</th> 
 
      <th>state</th> 
 
     </tr> 
 
    </thead> 
 
    <tbody> 
 
      <tr >     
 
       <td>salim groceries</td> 
 
       <td>apple</td> 
 
       <td>nagpur</td> 
 
       <td>Fresh</td> 
 
      </tr> 
 
      <tr > 
 
       <td>monalisa groceries</td> 
 
       <td>Apple</td> 
 
       <td>Belapur</td> 
 
       <td>Rotten</td> 
 
      </tr> 
 
      <tr > 
 
       <td>taj groceries</td> 
 
       <td>Orange</td> 
 
       <td>Nasik</td> 
 
       <td>Fresh</td> 
 
      </tr> 
 
      <tr > 
 
       <td>suraj groceries</td> 
 
       <td>Orange</td> 
 
       <td>Goa</td> 
 
       <td>Rotten</td> 
 
      </tr> 
 
    </tbody> 
 

 
</table>

+0

新鲜和腐烂的选择不起作用 – tripathy

+0

我们不有关于'表' – RonyLoud

+0

中的任何数据,请参阅表 – tripathy

1

至于你问,我加入了一个多解决方案,其中有你的HTML没有变化。

解决方法1:如果没有在HTML

document.getElementById("dropDown").addEventListener("change", viewChange) 
 

 
function viewChange() 
 
{ 
 
    var value = $('#dropDown :selected').text(); 
 
    if(value=="All"){ 
 
    \t $("#tableID tbody tr").removeClass("hiddenItem"); 
 
    } else { 
 
    \t $("#tableID tbody tr").addClass("hiddenItem"); 
 
    
 
    \t $("#tableID tbody tr td").each(function (key, tdElem) { 
 
    \t \t 
 
    \t \t if(tdElem.innerHTML.toLocaleUpperCase() == value.toLocaleUpperCase()){ 
 
        \t $(tdElem.parentElement).removeClass("hiddenItem"); 
 
     \t \t } 
 
     }); 
 
    } 
 
}
.hiddenItem { 
 
    display : none; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<select id="dropDown"><option value="1">All</option> 
 
<option value="2">Apple</option> 
 
<option value="3">Orange</option> 
 
<option value="4">Fresh</option> 
 
<option value="5">Rotten</option> 
 
</select> 
 

 
<table id="tableID"> 
 
    <thead> 
 
     <tr> 
 
      <th>Name</th> 
 
      <th>Fruit type</th> 
 
      <th>place</th> 
 
      <th>state</th> 
 
     </tr> 
 
    </thead> 
 
    <tbody> 
 
      <tr >     
 
       <td>salim groceries</td> 
 
       <td>apple</td> 
 
       <td>nagpur</td> 
 
       <td>Fresh</td> 
 
      </tr> 
 
      <tr > 
 
       <td>monalisa groceries</td> 
 
       <td>Apple</td> 
 
       <td>Belapur</td> 
 
       <td>Rotten</td> 
 
      </tr> 
 
      <tr > 
 
       <td>taj groceries</td> 
 
       <td>Orange</td> 
 
       <td>Nasik</td> 
 
       <td>Fresh</td> 
 
      </tr> 
 
      <tr > 
 
       <td>suraj groceries</td> 
 
       <td>Orange</td> 
 
       <td>Goa</td> 
 
       <td>Rotten</td> 
 
      </tr> 
 
    </tbody> 
 

 
</table>

变化解决方案2:随着HTML变化

试试这个,它的工作原理

document.getElementById("dropDown").addEventListener("change", viewChange) 
 

 
function viewChange() 
 
{ 
 
    var value = this.value; 
 
    if(value=="All"){ 
 
    \t $("#tableID tbody tr").removeClass("hiddenItem"); 
 
    } else { 
 
    \t $("#tableID tbody tr").addClass("hiddenItem"); 
 
    \t $("#tableID tbody ." + value).removeClass("hiddenItem"); 
 
    } 
 
}
.hiddenItem { 
 
    display : none; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<select id="dropDown" ><option value="All">All</option> 
 
<option value="Apple">Apple</option> 
 
<option value="Orange">Orange</option> 
 
<option value="Fresh">Fresh</option> 
 
<option value="Rotten">Rotten</option> 
 
</select> 
 

 
<table id="tableID"> 
 
    <thead> 
 
     <tr> 
 
      <th>Name</th> 
 
      <th>Fruit type</th> 
 
      <th>place</th> 
 
      <th>state</th> 
 
     </tr> 
 
    </thead> 
 
    <tbody> 
 
      <tr class="Apple Nagpur Fresh">     
 
       <td>salim groceries</td> 
 
       <td>Apple</td> 
 
       <td>Nagpur</td> 
 
       <td>Fresh</td> 
 
      </tr> 
 
      <tr class="Apple Belapur Rotten" > 
 
       <td>monalisa groceries</td> 
 
       <td>Apple</td> 
 
       <td>Belapur</td> 
 
       <td>Rotten</td> 
 
      </tr> 
 
      <tr class="Orange \t Nasik \t Fresh" > 
 
       <td>taj groceries</td> 
 
       <td>Orange</td> 
 
       <td>Nasik</td> 
 
       <td>Fresh</td> 
 
      </tr> 
 
      <tr class="Orange \t Goa \t Rotten" > 
 
       <td>suraj groceries</td> 
 
       <td>Orange</td> 
 
       <td>Goa</td> 
 
       <td>Rotten</td> 
 
      </tr> 
 
    </tbody> 
 

 
</table>

+0

上的负载,它不显示任何行,它应该有所有的默认和显示整个表,点击运行代码片段,并看到 – tripathy

+0

不编辑HTML,因为表是动态的 – tripathy

+0

如果它是一个动态表,你将能够添加类,所有你需要做的是编辑你的html模板 –

1

请尝试以下

$.expr[":"].contains = $.expr.createPseudo(function(arg) { 
 
    return function(elem) { 
 
    return $(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0; 
 
    }; 
 
}); 
 
function ViewChange($this) { 
 
    var pid = $('option:selected', $this).text(); 
 
    $('#tableID tr').hide(); 
 
    $('#tableID tr > td:contains(' + pid + ')').each(function() { 
 
    $(this).parent().toggle(); 
 
    }); 
 
    if(pid == "All") { 
 
    $('#tableID tr').show(); 
 
    } else {  
 
    $('#tableID tr:first').show(); 
 
    } 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<select id="dropDown" onchange="ViewChange(this)"><option value="1">All</option> 
 
<option value="2">Apple</option> 
 
<option value="3">Orange</option> 
 
<option value="4">Fresh</option> 
 
<option value="5">Rotten</option> 
 
</select> 
 

 
<table id="tableID"> 
 
<thead> 
 
    <tr> 
 
    <th>Name</th> 
 
    <th>Fruit type</th> 
 
    <th>place</th> 
 
    <th>state</th> 
 
    </tr> 
 
</thead> 
 
<tbody> 
 
    <tr >     
 
    <td>salim groceries</td> 
 
    <td>apple</td> 
 
    <td>nagpur</td> 
 
    <td>Fresh</td> 
 
    </tr> 
 
    <tr > 
 
    <td>monalisa groceries</td> 
 
    <td>Apple</td> 
 
    <td>Belapur</td> 
 
    <td>Rotten</td> 
 
    </tr> 
 
    <tr > 
 
    <td>taj groceries</td> 
 
    <td>Orange</td> 
 
    <td>Nasik</td> 
 
    <td>Fresh</td> 
 
    </tr> 
 
    <tr > 
 
    <td>suraj groceries</td> 
 
    <td>Orange</td> 
 
    <td>Goa</td> 
 
    <td>Rotten</td> 
 
    </tr> 
 
</tbody> 
 
</table>

这里是工作的jsfiddle:https://jsfiddle.net/pvxmrL2n/10/

0

你可以走线槽这个文件,并检查功能,它可以自动检查每个文字

https://jsfiddle.net/pvxmrL2n/23/ 


https://jsfiddle.net/pvxmrL2n/23/ 

https://jsfiddle.net/pvxmrL2n/23/ 

function ViewChange(miljo) 
 
{ 
 
var res = miljo.toLowerCase(); 
 
var rows = document.getElementsByTagName("table")[0].rows; 
 
var count=0; 
 
for(count = 0; count < rows.length; count++) 
 
    { 
 
    var j=0; 
 

 

 

 
    if(rows[count].className=='allrecords'){ 
 

 
    if(res=='all') 
 
    { 
 
    rows[count].style.display = ''; 
 
    }else{ 
 
    rows[count].style.display = 'none'; 
 
    for (j = 0; j < rows[count].cells.length; j++) { 
 

 
     var contentval=rows[count].cells[j].innerText; 
 
     contentvallwr=contentval.toLowerCase(); 
 
     if(res==contentvallwr) 
 
     { 
 
rows[count].style.display = ''; 
 
      break; 
 
     } 
 
    } 
 
    } 
 
    } 
 
    } 
 

 
}
<select id="dropDown" onchange="ViewChange(this.options[this.selectedIndex].innerHTML)"> 
 
<option value="1">All</option> 
 
<option value="2">Apple</option> 
 
<option value="3">Orange</option> 
 
<option value="4">Fresh</option> 
 
<option value="5">Rotten</option> 
 
</select> 
 
<table id="tableID"> 
 
    <thead> 
 
     <tr class="head"> 
 
      <th>Name</th> 
 
      <th>Fruit type</th> 
 
      <th>place</th> 
 
      <th>state</th> 
 
     </tr> 
 
    </thead> 
 
    <tbody> 
 
      <tr class="allrecords" >     
 
       <td>salim groceries</td> 
 
       <td>apple</td> 
 
       <td>nagpur</td> 
 
       <td>Fresh</td> 
 
      </tr> 
 
      <tr class="allrecords"> 
 
       <td>monalisa groceries</td> 
 
       <td>Apple</td> 
 
       <td>Belapur</td> 
 
       <td>Rotten</td> 
 
      </tr> 
 
      <tr class="allrecords"> 
 
       <td>taj groceries</td> 
 
       <td>Orange</td> 
 
       <td>Nasik</td> 
 
       <td>Fresh</td> 
 
      </tr> 
 
      <tr class="allrecords"> 
 
       <td >suraj groceries</td> 
 
       <td>Orange</td> 
 
       <td>Goa</td> 
 
       <td>Rotten</td> 
 
      </tr> 
 
    </tbody> 
 

 
</table>

相关问题