Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何显示隐藏/显示菜单(onblur/onfocus)_Javascript_Html - Fatal编程技术网

Javascript 如何显示隐藏/显示菜单(onblur/onfocus)

Javascript 如何显示隐藏/显示菜单(onblur/onfocus),javascript,html,Javascript,Html,我希望只有在按下用户图标时才有第二个菜单(见图)。我设法设置了一个显示“Block”和“display:None”。但是,当我按下第二个菜单项时,该菜单消失 如何保持菜单的焦点 您可以在顶级菜单中添加一个“单击”事件侦听器,用于切换布尔值true或false。如果为true,则将“显示:块”样式添加到子菜单,如果为false,则将“显示:无”值添加到子菜单 index.html <div> <button id='toggle-menu'>Menu</butt

我希望只有在按下用户图标时才有第二个菜单(见图)。我设法设置了一个显示“Block”和“display:None”。但是,当我按下第二个菜单项时,该菜单消失

如何保持菜单的焦点


您可以在顶级菜单中添加一个“单击”事件侦听器,用于切换布尔值true或false。如果为true,则将“显示:块”样式添加到子菜单,如果为false,则将“显示:无”值添加到子菜单

index.html

<div>
  <button id='toggle-menu'>Menu</button>
  <div id='sub-menu'>
    <a href='#'>Link 1</a>
    <a href='#'>Link 2</a>
  </div>
</div>


此处代码打开:

不要使用焦点/模糊。使用“单击”显示/隐藏。如果用户单击其中一个菜单项,它们将被重定向,并且菜单将被重置。如果目标不是按钮,您可以在正文中添加单击事件以关闭菜单。嘿,谢谢您的回答。菜单显示良好,隐藏良好。但是,如果我在菜单外单击,它将保持显示状态。如何将onblur集成到脚本中?没问题。您可以尝试使用“mouseleave”事件侦听器。我已在此处更新了代码笔:。我在外部容器中添加了一个id(假设这是完整的导航栏),当鼠标离开时,display:none被添加到子菜单中
<div>
  <button id='toggle-menu'>Menu</button>
  <div id='sub-menu'>
    <a href='#'>Link 1</a>
    <a href='#'>Link 2</a>
  </div>
</div>

const toggleMenu = document.getElementById('toggle-menu');
const subMenu = document.getElementById('sub-menu');

let showSubMenu = false;

toggleMenu.addEventListener('click', () => {
  showSubMenu = !showSubMenu
  if (showSubMenu === true) {
    subMenu.style.display = 'none'
  } else {
    subMenu.style.display = 'block'
  }
})