javascript菜单,当鼠标在div之外时如何关闭?

标签 javascript drop-down-menu

这是我的第一个纯 JavaScript 脚本,从它的长度你就可以看出!我不知道如何让 div 中的子链接与一个名为“菜单”的类在我离开该 div 时关闭。 我试图编写一个 If 参数,以在我离开“A”和“DIV”时将其设置为关闭,但这似乎不起作用? 任何帮助将不胜感激,并对过长的代码表示歉意! 请暂时不要使用 Jquery,谢谢!

<script>
    // Variables
    var getFirstMenu = document.getElementsByTagName('div');
    // Use selectors
    var getMenuClasses = document.getElementsByClassName('menu');
    // Hide drop down menus
    for(var i=0; i < getFirstMenu.length; i++){
      getFirstMenu[i].style.visibility = 'hidden';
    }
    // =============================
    // Show Menu on mouseover
    function showDropdown(e){
     var el = e.target;
    if(el.nodeName == 'A'){
        for(var i = 0; i < getMenuClasses.length; i++) {
          if(el == getMenuClasses[0]){
            getFirstMenu[0].style.visibility = 'visible';
          }else if(el == getMenuClasses[1]) {
             getFirstMenu[1].style.visibility = 'visible';
          }else if(el == getMenuClasses[2]){
            getFirstMenu[2].style.visibility = 'visible';
          }
        }
      }
    }
    var getMainMenu = document.getElementById('menu');
    getMainMenu.addEventListener('mouseover', function(e){
        showDropdown(e);
    },false);

    // =============================
    // Hide Menu on mouseout
    function mouseOutMenu(e){
     var el = e.target;
      if(el.nodeName == 'DIV')
        for(var i = 0; i < getFirstMenu.length; i++){
        getFirstMenu[i].style.visibility = 'hidden';
          }
    }
    getMainMenu.addEventListener('mouseout', function(e){
      mouseOutMenu(e);
    }, false);

最佳答案

向文档对象添加处理程序

document.addEventHandler('mouseover', function(){
   // close it
}, false);

或者当要隐藏子菜单时:将处理程序添加到菜单,然后在鼠标悬停时隐藏菜单

关于javascript菜单,当鼠标在div之外时如何关闭?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27472753/

相关文章:

javascript - setTimeout 不适用于 Angular5

javascript - 无法在文本框中显示组合框值

javascript - 引导导航栏按钮的当前 URL

javascript - 如何使用路由器和内置/自定义属性在 aurelia 中创建下拉菜单?

html - Bootstrap 下拉菜单不起作用(不显示下拉列表)

jsf-2 - 根据 selectOneMenu 值更改隐藏/显示表单

javascript - 如何避免兄弟组件重新渲染

javascript - 使用 jquery 的远程图像属性

c# - 格式 DropDownList.TextValue

css - 我怎样才能让下拉框与 css 类一起工作?