[英]how to continuously click on button to show next element in javascript
I currently have a bootstrap table with 3 hidden rows.我目前有一个包含 3 个隐藏行的引导表。 I have a button that I want to click to show the row.
我有一个按钮,我想点击它来显示该行。 I have this working but I want to add functionality so that when i click that button again the next row shows and click it one more time and the third hidden row shows.
我有这个工作,但我想添加功能,以便当我再次单击该按钮时,下一行显示并再次单击它,第三隐藏行显示。 Is it possible to do this based off this function?
是否可以根据此 function 执行此操作?
<table id = "mt" class="tableManager-table-bordered"
<thead class = "thead-dark">
<tr>
<th data-field="#">#</th>
<th data-field="CurrentAnnouncements">Current Announcements</th>
</tr>
</thead>
<tbody>
<tr class = "row5" id = "row5">
<th data-field="#">5</th>
<td class = "An5">Announcement 5</td>
</tr>
<tr class = "row6 id ="row6">
<th data-field="#">6</th>
<td class = "An6">Announcement 6</td>
</tr>
<tr class = "row7" id ="row7">
<th data-field="#">7</th>
<td class = "An7">Announcement 7</td>
</tr>
</tbody>
</table>
<button type = "button" id = "crtbtn" class = "CreateAnnouncement">
Create Announcement
</button>
$(function () {
$("#crtbtn").on('click', function () {
$("#row5").show();
});
});
Something like this would do the job:像这样的东西可以完成这项工作:
$(function () { const alltrs=$("#container tr").hide(); $("#crtbtn" ).click(ev=>alltrs.filter(':hidden:first').show()); $('#hideall').click(ev=>alltrs.hide()); });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <button id="crtbtn">show more</button> <button id="hideall">hide all again</button> <table id="container"> <tr class = "r5" id = "r5"> <th data-field="#">5</th> <td class = "An5">Announcement 5</td> </tr> <tr class = "r6"> <th data-field="#">6</th> <td class = "An6">Announcement 6</td> </tr> <tr class = "r7"> <th data-field="#">7</th> <td class = "An7">Announcement 7</td> </tr> </table>
You can do the same thing also without jQuery.你也可以在没有 jQuery 的情况下做同样的事情。 Admittedly, a little more verbose, but it is still fairly short and clear:
诚然,有点冗长,但它仍然相当简短和清晰:
const alltrs=[...document.querySelectorAll("#container tr")], hideall=ev=>alltrs.forEach(t=>t.style.display="none"); hideall(); document.getElementById("crtbtn" ).onclick=ev=>{ alltrs.some(t=>t.style.display=='none'? .(t.style:display=""). false) } document.getElementById('hideall');onclick=hideall;
<button id="crtbtn">show more</button> <button id="hideall">hide all again</button> <table id="container"> <tr class = "r5" id = "r5"> <th data-field="#">5</th> <td class = "An5">Announcement 5</td> </tr> <tr class = "r6"> <th data-field="#">6</th> <td class = "An6">Announcement 6</td> </tr> <tr class = "r7"> <th data-field="#">7</th> <td class = "An7">Announcement 7</td> </tr> </table>
alltrs.some(t=>t.style.display=='none'? .(t.style:display="") : false) }
goes through all <tr>
s until it finds one that has t.style.display=="none"
. alltrs.some(t=>t.style.display=='none'? .(t.style:display="") : false) }
遍历所有<tr>
直到找到具有t.style.display=="none"
。 In that case it sets the same property to a blank ( ""
) and returns true
( = !""
) thereby ending the .some()
loop.在这种情况下,它将相同的属性设置为空白(
""
)并返回true
( = !""
),从而结束.some()
循环。
You can just show the next element after the last shown element -您可以在最后一个显示的元素之后显示下一个元素 -
$(document).ready(function() { $('#table').find('tr').slice(1).hide(); $('#button').on('click', function() { $('#table').find('tr:visible').next().show(); }); });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <table id="table"> <tr> <th>Company</th> <th>Contact</th> <th>Country</th> </tr> <tr> <td>Alfreds Futterkiste</td> <td>Maria Anders</td> <td>Germany</td> </tr> <tr> <td>Centro comercial Moctezuma</td> <td>Francisco Chang</td> <td>Mexico</td> </tr> <tr> <td>Ernst Handel</td> <td>Roland Mendel</td> <td>Austria</td> </tr> <tr> <td>Island Trading</td> <td>Helen Bennett</td> <td>UK</td> </tr> <tr> <td>Laughing Bacchus Winecellars</td> <td>Yoshi Tannamuri</td> <td>Canada</td> </tr> <tr> <td>Magazzini Alimentari Riuniti</td> <td>Giovanni Rovelli</td> <td>Italy</td> </tr> </table> <button id="button"> Show </button>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.