【问题标题】:Create drawer effect in a table在表格中创建抽屉效果
【发布时间】:2020-04-12 06:46:20
【问题描述】:

我正在创建一个包含行的表。当我 mouseover 任何一行时,紧挨着第一行下方的另一行带有 display=None 更改为 display="" 允许它出现。那工作正常。

我想放一个onmouseleave=function(id),当鼠标离开这两行时,它会再次隐藏第二行。例如,转到第三行,或离开页面的一侧。

效果就像一个下拉抽屉,让用户可以看到更多信息并点击按钮。但是,当我将onmouseleave 调用放在第一行(触发第二行出现的那个)时,我不能将鼠标悬停在第二行上,否则它会因为鼠标离开第一行而被触发消失。如果我将鼠标悬停在第二行,那么除非首先将鼠标悬停,否则该行将无法消失。因此,如果我要退出第一行的一侧,它不会消失,因为鼠标从一开始就不会越过它。

我尝试将两行都包装在 <div> 中,但这种方式根本无法调用 onmouseleave=function(id) 函数。我猜一个<div> 不能包装两个<tr>?

我怎样才能让这两个表行作为一个onmouseleave=?

这不允许我点击第二行 -> https://jsfiddle.net/tvxpzud8/

这根本不起作用-> https://jsfiddle.net/01w9js8x/

function openDrawer(drawer_id) {
  var drawer = document.getElementById("drawer-" + drawer_id);
  drawer.style.display = "";
}

function closeDrawer(drawer_id) {
  drawer = document.getElementById("drawer-" + drawer_id);
  drawer.style.display = "none";
}
<table>

  <tr onmouseover="openDrawer(1)" onmouseleave="closeDrawer(1)">
    <td>col 1-1</td>
    <td>col 1-2</td>
    <td>col 1-3</td>
  </tr>

  <tr id="drawer-1" style="display:none;">
    <td>col 2-1</td>
    <td>col 2-2</td>
    <td>col 2-3</td>
  </tr>

  <tr onmouseover="openDrawer(2)" onmouseleave="closeDrawer(2)">
    <td>col 3-1</td>
    <td>col 3-2</td>
    <td>col 3-3</td>
  </tr>

  <tr id="drawer-2" style="display:none;">
    <td>col 4-1</td>
    <td>col 4-2</td>
    <td>col 4-3</td>
  </tr>

</table>

【问题讨论】:

  • 请分享您目前获得的代码。
  • 添加了代码示例

标签: javascript html mouseover


【解决方案1】:

可能有更好的解决方案,这只是我想到的第一件事。

  1. 将onmouseleave 从行移到表中,并将其更改为隐藏所有抽屉。我添加了一个class="drawer",这样我就可以一次选择所有这些。
  2. 将onmouseovers 保留在原处,但更改功能以隐藏所有抽屉,然后再显示当前抽屉。

见我的fiddle。

【讨论】:

  • 那行得通,我也有类似的想法并开发了类似的解决方案,但你的更好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-12
相关资源
最近更新 更多