javascript - 如何使用 JavaScript 显示/隐藏隐藏的 HTML 表格行(无 jQuery)

标签 javascript html css toggle html-table

编辑:下面已经回答了这个问题。

我想要一个 HTML 表格,每行之间都有隐藏行,其中包含有关顶级行的更多信息。单击第一列中的展开/折叠图像链接时,隐藏行的可见性将从显示切换:无;显示:表格行;。我有一段时间没有编写 JavaScript,需要能够严格地在 JavaScript 中执行此操作,并且不能使用 jQuery toggle() 方法。

我如何使用 JavaScript 找到按钮所在的表中带有 class="parentRow"的同级 class="subRow",然后切换该同级行的可见性?

HTML

<table style="width:50%">
    <caption>Test Table</caption>
    <thead>
        <tr align="center">
            <th><span class="offscreen">State Icon</span></th>
            <th>Column 2</th>               
            <th>Column 3</th>               
            <th>Column 4</th>               
            <th>Column 5</th>
        </tr>
    </thead>
    <tbody>
        <tr align="center" class="parentRow">
            <td><a href="#" onclick="toggleRow();"><img alt="Expand row" height="20px;" src="expand.png"></a></td>
            <td>test cell</td>
            <td>test cell</td>
            <td>test cell</td>
            <td>test cell</td>
        </tr>
        <tr style="display: none;" class="subRow">
            <td colspan="5"><p>Lorem ipsum dolor sit amet...</p></td>
        </tr>
....
    </tbody>
</table>

CSS

.offscreen {
  position: absolute;
  left: -1000px;
  top: 0px;
  overflow:hidden;
  width:0;
}

.subRow {
    background-color: #CFCFCF; 
}

JavaScript

function toggleRow() {
    var rows = document.getElementsByClassName("parentRow").nextSibling;
    rows.style.display = rows.style.display == "none" ? "table-row" : "none";
}

最佳答案

使用 this 向您的事件处理程序传递对被单击行的引用:

<td><a href="#" onclick="toggleRow(this);"><img alt="Expand row" height="20px;" src="expand.png"></a></td>

然后按如下方式更新您的 toggleRow 函数:

function toggleRow(e){
    var subRow = e.parentNode.parentNode.nextElementSibling;
    subRow.style.display = subRow.style.display === 'none' ? 'table-row' : 'none';    
}

您可能需要考虑创建一个通用函数来向上导航 DOM 树(这样当/如果您更改 HTML,此函数就不会中断)。

关于javascript - 如何使用 JavaScript 显示/隐藏隐藏的 HTML 表格行(无 jQuery),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30901174/

相关文章:

javascript - Websocket 跨页面 JavaScript

javascript - 不推荐使用 KeyboardEvent.keyCode。这在实践中意味着什么?

html - 定位一个 figcaption 以固定在图像的右下角

javascript - 如何将数据从文本列传递到DataTable中的onClick按钮?

html - 如何防止 child 受到 css3 中变换比例的影响?

<td> 元素集的 HTML/CSS 宽度

html - 单击带有 alpha channel 的 div

css - 移动 HTML5 应用程序的媒体查询

html - 如何保持事件链接颜色?

php - 我有 2 个网站(在不同的域上)需要彼此 "talk"。除了 JSONP 还有哪些解决方案?