javascript - 在 Javascript 中创建下拉菜单 - Canvas 上没有显示

标签 javascript html css

我试图在 javascript、html 和 css 中创建一个下拉菜单,但是当我运行代码时, Canvas 上没有显示任何内容。是因为文件之间没有正确通信吗?

HTML:

<!DOCTYPE html>
<html>
    <head>
        <title>DropdownMenu</title>
        <link rel='stylesheet' type='text/css' href='Stylesheetdropdown.css'/>
    </head>
    <body>
        <canvas id="canvas" width="5000" height="5000">
        </canvas>
        <script type='text/javascript' src='DropdownMenu.js'></script>
    </body>
    <body>
    <div class = "dropdown">
    <button onclick = "dropdown()" class = "drpdwnbtn">Menu</button>
        <div id = "myMenu" class = "drpdwncntnt">
            <p>100</p>
            <p>200</p>
            <p>300</p>
        </div>
    </div>
    </body>
</html>

Javascript:

function dropdown() {
    document.getElementById("myMenu").classList.toggle("show");
}
window.onclick = function (event) {
    if (!event.target.matches('.drpdwnbtn')) {

        var dropdowns = document.getElementsByClassName("drpdwncntnt"),
            i,
            openDropdown = dropdowns[i];
        for (i = 0; i < dropdowns.length; i += 1) {
            if (openDropdown.classList.contains('show')) {
                openDropdown.classList.remove('show');
            }
        }
    }
};

CSS:

.drpdwnbtn {
    background-color: #4CAF50;
    color: white;
    padding: 16px;
    font-size: 16px;
    border: none;
    cursor: pointer;
}

.drpdwnbtn:hover, .drpdwnbtn:focus {
    background-color: #E0FFFF;
}

.dropdown {
    position: relative;
    display: inline-block;
}

.drpdwncntnt {
    display: none;
    position: absolute;
    background-color: #f9f9f9;
    min-width: 160px;
    overflow: auto;
    box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
    z-index: 1;
}

.drpdwncntnt a {
    color: black;
    padding: 12px 16px;
    text-decoration: none;
    display: block;
}

.dropdown a:hover {background-color: #f1f1f1}

.show {display:block;}

最佳答案

您的 Canvas 位于菜单 div 上方,您的 html 应如下所示:

<div class = "dropdown">
<button onclick = "dropdown()" class = "drpdwnbtn">Menu</button>
    <div id = "myMenu" class = "drpdwncntnt">
        <p>100</p>
        <p>200</p>
        <p>300</p>
    </div>
    </div>
    <canvas id="canvas" width="5000" height="5000">
    </canvas>

,所以这是一个有效的 fiddle :

https://jsfiddle.net/ahpook4p/

关于javascript - 在 Javascript 中创建下拉菜单 - Canvas 上没有显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45214232/

相关文章:

javascript - 识别特定的 Div 而不是使用 .next()?

html - 如何防止CSS动画中的闪烁问题?

css - 表格行的着色交替

html - 纯CSS复选框图片替换多对

html - 左边的盒子被向下推

javascript - 获取所有按钮标签类型

javascript - 如何将 onload 属性与 ng-controller 指令一起使用来执行 Controller 中定义的函数?

javascript - 使用 vanilla js 在 Dom 上显示元素后,通过单击窗口对象来隐藏元素?

javascript - Canvas 部分圆

javascript - Node 找不到本地目录中的模块