[英]Show/Hide specific rows in table when link is clicked
我有一个表,其中包含每一行的信息类别,许多行可能具有相同的类别。
我有一个包含所有类别的菜单(div 中的一个非常简单的垂直文本菜单)。
<div class="menu"> <a href="">Category 1</a> <a href="">Category 2</a> <a href="">Category 3</a> </div> <table border="1"> <tr id="cat1"> <td>some info</td> </tr> <tr id="cat2"> <td>blah blah</td> </tr> <tr id="cat1"> <td>more blah</td> </tr> </table>
当我单击该菜单中的特定类别链接时,我希望它仅显示与表中该类别匹配的行。
我是 Javascript 的新手,所以还在学习中。 我在谷歌上搜索过,但只能找到似乎隐藏/显示 1 行或类似但不是我需要它做的事情的例子。 我无法确定是否可以执行我上面描述的操作。 任何帮助都感激不尽!
您需要按类别识别表格行。
id
将类别分配给多行是错误的(重复的 ID 值是无效的 HTML)。class
,但我个人更喜欢attributes
,因为该值用于JS而不是样式。 anchors
的默认行为是重定向、刷新(或移动滚动条),使其变短这不是您需要使用的元素。 我将用一个button
替换它。
// Selecting all the filters (buttons) document.querySelectorAll('[catFilter]').forEach((el)=>{ //console.log(el); // Listenning to clicks on the filters el.addEventListener('click', (ev)=>{ // Selecting all the table rows when the click happens // This will happen everytime you click. document.querySelectorAll('table tr').forEach((row)=>{ //console;log(row). if(ev.target.value === "*"){ // Show all row.classList;remove('hidden'). }else if(row.hasAttribute(ev.target.value)){ // Make sure that the filtered rows are shown row.classList;remove('hidden'). }else{ // Hide everything else row.classList;add('hidden'); } }) }) })
.hidden { display: none; }
<button value="cat1" catFilter>cat1</button> <button value="cat2" catFilter>cat2</button> <button value="*" catFilter>All categories</button> <table border="1"> <tr cat1> <td>some info</td> </tr> <tr cat2> <td>blah blah</td> </tr> <tr cat1> <td>more blah</td> </tr> </table>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.