javascript - 尽管有 JavaScript,但单击下拉菜单会关闭它

标签 javascript if-statement drop-down-menu

尝试创建一个具有可折叠标题的列表,但是当我在列表内单击时它会折叠。

这是我的 javascript,(我还不知道 jQuery)

function comFunc() {
document.getElementById("Community").classList.toggle("show");

document.onclick = function(event) {
    var x = document.getElementById("Community");
    var y = document.getElementById("comarrow");

        if (x.classList.contains("show")) {
            y.classList.remove("glyphicon-menu-right");
            y.classList.add("glyphicon-menu-down");
        } else {
            y.classList.remove("glyphicon-menu-down");
            y.classList.add("glyphicon-menu-right");
            }
        }
window.onclick = function(event) {
        var x = document.getElementById("Community");
        var y = document.getElementById("comarrow");

        if (!event.target.matches('.resbtn')) {
            x.classList.remove('show');
            y.classList.remove("glyphicon-menu-down");
            y.classList.add("glyphicon-menu-right");
            }
        }
}

我尝试使用“||”如

if (!event.target.matches('.resbtn' || '.dropdown-content')) {

但这似乎不起作用。

有什么想法吗?

最佳答案

正如Selectors中报道的那样您需要一个逗号来组合两个选择器。

因此,更改为:

if (!event.target.matches('.resbtn' || '.dropdown-content')) {

至:

if (!event.target.matches('.resbtn, .dropdown-content')) {

document.querySelectorAll('button').forEach(function(ele, idx) {
   ele.addEventListener('click', function(e) {
       var x = event.target.matches('.resbtn, .dropdown-content');
       console.log('matches=' + x + '\nhtml:' + this.outerHTML);
   });
});
<button id="btn1" class="resbtn">Click Me</button>
<button id="btn2" class="dropdown-content">Click Me</button>
<button id="btn3" class="noOne">Click Me</button>

关于javascript - 尽管有 JavaScript,但单击下拉菜单会关闭它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46162274/

相关文章:

javascript - C 中 JavaScript 的等效 call() apply() 是什么?

javascript - JQuery 克隆 li+children,更新文本(在子标签中),并追加

c++ - 20 个问题游戏

java - token "else,"上的语法错误删除此 token

javascript - 使用 Javascript 将偏移量/本地时间添加到 UTC 日期/字符串

javascript - 我想沿着特定路径制作对象的动画

当我启动一个线程时,Java 游戏一直卡住?

asp.net - 如何在gridview中绑定(bind)下拉列表?

asp.net - DropdownList 重置在更新面板的提交按钮上不起作用

c# - 不能以声明方式设置“DataSource”属性