html onclick显示/隐藏下一个表格行

djp7away  于 2024-01-04  发布在  其他
关注(0)|答案(3)|浏览(264)

onclick获取按钮显示/隐藏单击按钮和下一步按钮之间的下一行。
如何显示这些行作为隐藏的第一和之后,我可以切换显示和隐藏他们。如果这是可能的香草JavaScript和CSS。

  1. table,
  2. th,
  3. td {
  4. border: 1px solid black;
  5. }

个字符

izkcnapc

izkcnapc1#

这里实现您想要的功能的关键是使用.nextUntil("tr:has(button)")
如:

  1. $('table button').click(function() {
  2. var n = $(this).closest("tr").nextUntil("tr:has(button)");
  3. n.toggle()
  4. })

字符串

Demo

  1. $('table button').click(function() {
  2. var n = $(this).closest("tr").nextUntil("tr:has(button)");
  3. n.toggle()
  4. })
  1. table,
  2. th,
  3. td {
  4. border: 1px solid black;
  1. <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  2. <table>
  3. <tr>
  4. <td><button>show/hide</button> A</td>
  5. <td>B</td>
  6. <td>C</td>
  7. </tr>
  8. <tr>
  9. <td>test</td>
  10. <td>test</td>
  11. <td>test</td>
  12. </tr>
  13. <tr>
  14. <td>test 1</td>
  15. <td>test 1</td>
  16. <td>test 1</td>
  17. </tr>
  18. <tr>
  19. <td><button>show/hide</button> AA</td>
  20. <td>BB</td>
  21. <td>CC</td>
  22. </tr>
  23. <tr>
  24. <td>test</td>
  25. <td>test</td>
  26. <td>test</td>
  27. </tr>
  28. <tr>
  29. <td>test 1</td>
  30. <td>test 1</td>
  31. <td>test 1</td>
  32. </tr>
  33. <tr>
  34. <td><button>show/hide</button> AAA</td>
  35. <td>BBB</td>
  36. <td>CCC</td>
  37. </tr>
  38. <tr>
  39. <td>test</td>
  40. <td>test</td>
  41. <td>test</td>
  42. </tr>
  43. <tr>
  44. <td>test 1</td>
  45. <td>test 1</td>
  46. <td>test 1</td>
  47. </tr>
  48. </table>
展开查看全部
px9o7tmv

px9o7tmv2#

使用vanilla JavaScript,你可以利用indexOf方法来查找包含点击按钮的table-row元素的位置,然后在N行上迭代并切换显示状态。

  1. document.querySelectorAll('button').forEach(bttn=>bttn.addEventListener('click',function(e){
  2. /* create an array from the nodelist so that `indexOf` can be used */
  3. let col=[...document.querySelectorAll('tr')];
  4. /* find the parent table row of the invoking button */
  5. let tr=this.parentNode.parentNode;
  6. /* find which table row in the array was the event source */
  7. let index=col.indexOf( tr ) + 1;
  8. /* process the next N records/rows */
  9. for( let i=index; i < index + 2; i++ ){
  10. col[i].style.display=col[i].style.display=='table-row' || col[i].style.display=='' ? 'none' : 'table-row'
  11. }
  12. }))
  1. table, th, td {
  2. border: 1px solid black;
  3. }
  4. tr{display:table-row}
  1. <table>
  2. <tr>
  3. <td><button>show/hide</button> A</td>
  4. <td>B</td>
  5. <td>C</td>
  6. </tr>
  7. <tr>
  8. <td>test</td>
  9. <td>test</td>
  10. <td>test</td>
  11. </tr>
  12. <tr>
  13. <td>test 1</td>
  14. <td>test 1</td>
  15. <td>test 1</td>
  16. </tr>
  17. <tr>
  18. <td><button>show/hide</button> AA</td>
  19. <td>BB</td>
  20. <td>CC</td>
  21. </tr>
  22. <tr>
  23. <td>test</td>
  24. <td>test</td>
  25. <td>test</td>
  26. </tr>
  27. <tr>
  28. <td>test 1</td>
  29. <td>test 1</td>
  30. <td>test 1</td>
  31. </tr>
  32. <tr>
  33. <td><button>show/hide</button> AAA</td>
  34. <td>BBB</td>
  35. <td>CCC</td>
  36. </tr>
  37. <tr>
  38. <td>test</td>
  39. <td>test</td>
  40. <td>test</td>
  41. </tr>
  42. <tr>
  43. <td>test 1</td>
  44. <td>test 1</td>
  45. <td>test 1</td>
  46. </tr>
  47. </table>
展开查看全部
t8e9dugd

t8e9dugd3#

此代码针对两个表行设置。它不适用于两个以上的行。只有2行;隐藏并显示. for( let i=index; i < index + 2; i++ ),其中应使用变量表示数字2。换句话说,必须提前确定有多少行会受到影响。

相关问题