使用 Javascript 切换表的显示:无

发布于 2024-11-07 20:28:40 字数 71 浏览 0 评论 0原文

我想使用 JavaScript 来制作表格行的 display:none; 并通过单击按钮再次显示它。

I would like to use JavaScript to make a table row's display:none; and show it again on a click of a button.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

护你周全 2024-11-14 20:28:41

普通 JS - 委托,可以处理动态插入的行

window.addEventListener("DOMContentLoaded", function() {
  document.getElementById("nav").addEventListener("click", function(e) {
    var tgt = e.target;
    if (tgt.tagName === "A") {
      e.preventDefault(); // stop click
      var  rowId = tgt.getAttribute("data-id"),
        rowIndex = tgt.getAttribute("data-index"),
             row = rowId ? document.getElementById(rowId) : // id passed 
      document.getElementById('table1').rows[rowIndex - 1]; // idx passed
      if (row) row.style.display = (row.style.display == 'none') ? '' : 'none';
    }
  });
});
<div id="nav">
  <a href="#" data-id="row3">Toggle row with ID row3</a> | 
  <a href="#" data-index="2">Toggle 2nd row</a><hr/>
  
</div>

<table>
<tbody id="table1">
<tr><td>row 1 cell 1</td><td>row 1 cell 2</td><td>row 1 cell 3</td></tr>
<tr><td>row 2 cell 1</td><td>row 2 cell 2</td><td>row 2 cell 3</td></tr>
<tr id="row3"><td>row 3 cell 1</td><td>row 3 cell 2</td><td>row 3 cell 3</td></tr>
</tbody>
</table>

普通 JS - 内联处理程序还可以处理动态插入的行,但以上是首选

function toggle(row) {
  if (isNaN(row)) row = document.getElementById(row); // id passed
  else row = document.getElementById('table1').rows[row]; // idx passed
  if (row) row.style.display = (row.style.display == 'none') ? '' : 'none';
  return false;
}
<a href="#" onClick="return toggle('row3')">Toggle row with ID row3</a> | 
<a href="#" onClick="return toggle(1)">Toggle 2nd row</a><hr/>

<table>
<tbody id="table1">
<tr><td>row 1 cell 1</td><td>row 1 cell 2</td><td>row 1 cell 3</td></tr>
<tr><td>row 2 cell 1</td><td>row 2 cell 2</td><td>row 2 cell 3</td></tr>
<tr id="row3"><td>row 3 cell 1</td><td>row 3 cell 2</td><td>row 3 cell 3</td></tr>
</tbody>
</table>

Plain JS - delegation, can handle dynamically inserted rows

window.addEventListener("DOMContentLoaded", function() {
  document.getElementById("nav").addEventListener("click", function(e) {
    var tgt = e.target;
    if (tgt.tagName === "A") {
      e.preventDefault(); // stop click
      var  rowId = tgt.getAttribute("data-id"),
        rowIndex = tgt.getAttribute("data-index"),
             row = rowId ? document.getElementById(rowId) : // id passed 
      document.getElementById('table1').rows[rowIndex - 1]; // idx passed
      if (row) row.style.display = (row.style.display == 'none') ? '' : 'none';
    }
  });
});
<div id="nav">
  <a href="#" data-id="row3">Toggle row with ID row3</a> | 
  <a href="#" data-index="2">Toggle 2nd row</a><hr/>
  
</div>

<table>
<tbody id="table1">
<tr><td>row 1 cell 1</td><td>row 1 cell 2</td><td>row 1 cell 3</td></tr>
<tr><td>row 2 cell 1</td><td>row 2 cell 2</td><td>row 2 cell 3</td></tr>
<tr id="row3"><td>row 3 cell 1</td><td>row 3 cell 2</td><td>row 3 cell 3</td></tr>
</tbody>
</table>

Plain JS - inline handler can ALSO handle dynamically inserted rows but the above is preferred

function toggle(row) {
  if (isNaN(row)) row = document.getElementById(row); // id passed
  else row = document.getElementById('table1').rows[row]; // idx passed
  if (row) row.style.display = (row.style.display == 'none') ? '' : 'none';
  return false;
}
<a href="#" onClick="return toggle('row3')">Toggle row with ID row3</a> | 
<a href="#" onClick="return toggle(1)">Toggle 2nd row</a><hr/>

<table>
<tbody id="table1">
<tr><td>row 1 cell 1</td><td>row 1 cell 2</td><td>row 1 cell 3</td></tr>
<tr><td>row 2 cell 1</td><td>row 2 cell 2</td><td>row 2 cell 3</td></tr>
<tr id="row3"><td>row 3 cell 1</td><td>row 3 cell 2</td><td>row 3 cell 3</td></tr>
</tbody>
</table>

冰葑 2024-11-14 20:28:41

您必须修改 样式< /a> 元素的属性:

// `rowElement` is a reference to the row you want to hide
rowElement.style.display = 'none';

You have to modify the style attribute of the element:

// `rowElement` is a reference to the row you want to hide
rowElement.style.display = 'none';
遇到 2024-11-14 20:28:41

这个普通的 JS 解决方案有效(http://jsfiddle.net/C5g8U/3/):

tr = document.getElementsByTagName('tr');

for (var i = 0; i < tr.length; i++) {
  if (tr[i].getElementsByTagName('td').length == 3) {
    tr[i].style.display = 'none';
  }
}

我'我对我的普通 JS 有点生疏,因为我使用 jQuery 来做这样的事情,所以这里有一个 jQuery 解决方案:

$('#button').click(function() {
  $('tr').each(function() {
    if ($(this).find('td').length == 3) {
      $(this).toggle();
    }
  });
});

This vanilla JS solution works (http://jsfiddle.net/C5g8U/3/):

tr = document.getElementsByTagName('tr');

for (var i = 0; i < tr.length; i++) {
  if (tr[i].getElementsByTagName('td').length == 3) {
    tr[i].style.display = 'none';
  }
}

I'm a bit rusty with my vanilla JS, as I use jQuery for things like this, so here's a jQuery solution:

$('#button').click(function() {
  $('tr').each(function() {
    if ($(this).find('td').length == 3) {
      $(this).toggle();
    }
  });
});
如梦初醒的夏天 2024-11-14 20:28:41

一个 id,然后您可以使用 jQuery 隐藏它:

<tr id="sampleRow">
</tr>

$("#button").click(function () {
    $("#sampleRow").toggle(); 
});

如果当前可见,Toggle 会将其隐藏,如果当前隐藏,则显示它。

Give the <tr> an id and then you can hide it with jQuery:

<tr id="sampleRow">
</tr>

$("#button").click(function () {
    $("#sampleRow").toggle(); 
});

Toggle will make it hidden if it is currently visible, and will show it if it is currently hidden.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文