Javascript 使用计时器显示子菜单时出现问题

Javascript 使用计时器显示子菜单时出现问题,javascript,Javascript,我对javascript相当陌生,所以请容忍我 我正在使用html、css和javascript(无JQuery)的组合创建一个下拉导航菜单。导航栏中的两个链接有下拉到MouseOver的子菜单,我使用setTimeout和clearTimeout保持子菜单打开,直到我将鼠标移开 这就是我遇到的问题。如果我将鼠标悬停在导航栏中的某个链接上,我会看到它的子菜单,只要我保持鼠标在那里,它就会一直显示。如果我立即将鼠标移动到导航栏中的下一个链接,我将获得该链接的子菜单,但仅在它消失之前的最短时间内。我

我对javascript相当陌生,所以请容忍我

我正在使用html、css和javascript(无JQuery)的组合创建一个下拉导航菜单。导航栏中的两个链接有下拉到MouseOver的子菜单,我使用setTimeout和clearTimeout保持子菜单打开,直到我将鼠标移开

这就是我遇到的问题。如果我将鼠标悬停在导航栏中的某个链接上,我会看到它的子菜单,只要我保持鼠标在那里,它就会一直显示。如果我立即将鼠标移动到导航栏中的下一个链接,我将获得该链接的子菜单,但仅在它消失之前的最短时间内。我的计时器设置中有一些东西导致了这种情况,但我无法找到它。有人能帮我弄清楚我需要更改哪个设置吗

我意识到我在这里可能太罗嗦了,我道歉。如果你需要我澄清什么,请告诉我

这是我的javascript代码

function drop(menu) {
    if (menuId)
        menuId.style.display = 'none';

    menuId = document.getElementById(menu);
    menuId.style.display = 'block';
    menuId.style.position = 'relative';
    menuId.style.top = '100%';
    menuId.style.left = '0';

}

function beginTimer() {
    timer = window.setTimeout(hide, 500);
}

function timerToZero() {
    if (timer) {
        window.clearTimeout(timer);
        timer = 0;
    }
}

function hide() {
    if (menuId)
        menuId.style.display = 'none';
}
我的html代码在这里。我已将列表项缩写,以显示相关部分

<ul class="nav">
    <li><a href="DepartmentMembers.html" onMouseover="drop('departmentMenu')" onMouseout="beginTimer()">Department Members</a>
        <ul id="departmentMenu" onMouseover = "timerToZero()" onMouseout = "beginTimer()" style="display:none;position:absolute">
            <li><a href="BrianKendricks.html">Brian Kendricks</a></li>
            <li><a href="TimJones.html">Tim Jones</a></li>
            <li><a href="DavidKline.html">David Kline</a></li>
        </ul>
    </li>

    <li><a href="SystemsUsed.html" onMouseover="drop('systemMenu')" onMouseout="beginTimer()">Systems Used</a>
        <ul id="systemMenu" onMouseover = "timerToZero()" onMouseout = "beginTimer()" style="display:none;position:absolute">
            <li><a href="OrgChart.html">Organizational Chart of Library Systems</a></li>
            <li><a href="3M.html">3M Cloud (e-books)</a></li>
            <li><a href="Bibliotheca.html">Bibliotheca (DVD Checkout)</a></li>
        </ul>
    </li>
</ul>

我的其余部分可以在JSFIDLE上找到

我找到了解决问题的方法!最后我看了看计时器的线路

timer = window.setTimeout(hide, 500);
我决定我应该试着把它改成

timer = window.setTimeout(hide, 100);
这对我来说有很大的不同