为了账号安全,请及时绑定邮箱和手机立即绑定

在桌子上创建抽屉效果

在桌子上创建抽屉效果

holdtom 2023-12-11 10:20:42
我正在创建一个包含行的表。当我的mouseover任何行时,第一行正下方带有 a 的另一行将display=None更改为display=""允许它出现。效果很好。我想放置一个onmouseleave=function(id),当鼠标离开这两行时,它将再次隐藏第二行。例如,转到第三行,或转到页面的一侧。效果就像出现一个下拉抽屉,以便用户可以查看更多信息并单击按钮。但是,当我将onmouseleave调用放在第一行(触发第二行出现的调用)时,我无法将鼠标悬停在第二行上,否则它会被触发消失,因为鼠标离开了第一行。如果我将鼠标悬停在第二行,那么除非首先将鼠标悬停在该行上,否则该行无法消失。因此,如果我要退出第一行的一侧,它不会消失,因为鼠标一开始就不会越过它。我尝试将两行包装在 a 中,但这种方式根本<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>
查看完整描述

1 回答

?
芜湖不芜

TA贡献1796条经验 获得超7个赞

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

  1. onmouseleave从行移至表格,并将其更改为隐藏所有抽屉。我添加了一个,class="drawer"这样我就可以一次选择所有这些。

  2. 将 s保留onmouseover在原来的位置,但更改功能以隐藏所有抽屉,然后再显示当前抽屉。

看我的小提琴


查看完整回答
反对 回复 2023-12-11
  • 1 回答
  • 0 关注
  • 95 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信