简体   繁体   English

如何连续单击按钮以显示 javascript 中的下一个元素

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM