Javascript 为什么我的代码不';我不在IE11工作

Javascript 为什么我的代码不';我不在IE11工作,javascript,internet-explorer-11,Javascript,Internet Explorer 11,在Internet Explorer 11中,当我在按钮外单击时,子菜单不会隐藏,但在Google Chrome和Firefox中可以正常工作 .dropbtn{ 背景色:#4CAF50; 颜色:白色; 填充:16px; 字体大小:16px; 边界:无; 光标:指针; } .dropbtn:悬停,.dropbtn:焦点{ 背景色:#3e8e41; } .下拉列表{ 位置:相对位置; 显示:内联块; } .下拉内容{ 显示:无; 位置:绝对位置; 背景色:#f9f9f9; 最小宽度:160px

Internet Explorer 11中,当我在按钮外单击时,子菜单不会隐藏,但在Google ChromeFirefox中可以正常工作


.dropbtn{
背景色:#4CAF50;
颜色:白色;
填充:16px;
字体大小:16px;
边界:无;
光标:指针;
}
.dropbtn:悬停,.dropbtn:焦点{
背景色:#3e8e41;
}
.下拉列表{
位置:相对位置;
显示:内联块;
}
.下拉内容{
显示:无;
位置:绝对位置;
背景色:#f9f9f9;
最小宽度:160px;
溢出:自动;
盒影:0px 8px 16px 0px rgba(0,0,0,0.2);
}
.下拉内容a{
颜色:黑色;
填充:12px 16px;
文字装饰:无;
显示:块;
}
.下拉内容a:悬停{背景色:#f1f1}
.show{display:block;}
可点击下拉列表
单击按钮打开下拉菜单

下拉列表 //获取按钮,当用户单击它时,执行myFunction document.getElementById(“myBtn”).onclick=function(){myFunction()}; //myFunction在添加和删除show类之间切换,show类用于隐藏和显示下拉列表内容 函数myFunction(){ document.getElementById(“myDropdown”).classList.toggle(“show”); } //如果用户在下拉列表之外单击,请关闭下拉列表 window.onclick=函数(事件){ 如果(!event.target.matches('.dropbtn')){ var dropdowns=document.getElementsByClassName(“下拉内容”); var i; 对于(i=0;i
事件.target.matches
在Internet Explorer中不存在。中的浏览器兼容性表表明,从IE 9开始,此方法可用,但使用非标准名称
msMatchesSelector

因此,请尝试:

window.onclick = function(event) {
    matches = event.target.matches ? event.target.matches('.dropbtn') : event.target.msMatchesSelector('.dropbtn');
    if (!matches) {
        var dropdowns = document.getElementsByClassName("dropdown-content");
        var i;
        for (i = 0; i < dropdowns.length; i++) {
            var openDropdown = dropdowns[i];
            if (openDropdown.classList.contains('show')) {
                openDropdown.classList.remove('show');
            }
        }
    }
}
window.onclick=函数(事件){
matches=event.target.matches?event.target.matches('.dropbtn'):event.target.msMatchesSelector('.dropbtn');
如果(!匹配){
var dropdowns=document.getElementsByClassName(“下拉内容”);
var i;
对于(i=0;i
您可以使用jQuery库获得在IE中也能工作的跨浏览器兼容代码

在您的情况下,请将
替换为以下代码:

<script src="//code.jquery.com/jquery-1.12.3.min.js"></script>
<script>
$(function(){
    $(document).click(function(event){
        if(!$(event.target).is('#myBtn')
        && !$(event.target).is('#myDropdown a')) {
            $('#myDropdown').hide();
        }
        if($(event.target).is('#myBtn')) {
            $('#myDropdown').toggle();
        }
    });
});
</script>

$(函数(){
$(文档)。单击(函数(事件){
if(!$(event.target).is(“#myBtn”)
&&!$(event.target).is(“#myDropdown a”)){
$(“#我的下拉列表”).hide();
}
if($(event.target).is('#myBtn')){
$(“#我的下拉列表”).toggle();
}
});
});

如果这是您编写的代码,则应将其添加到问题中。Javascript控制台中是否存在任何错误?我敢打赌它说
event.target.matches
不是一个函数。
<script src="//code.jquery.com/jquery-1.12.3.min.js"></script>
<script>
$(function(){
    $(document).click(function(event){
        if(!$(event.target).is('#myBtn')
        && !$(event.target).is('#myDropdown a')) {
            $('#myDropdown').hide();
        }
        if($(event.target).is('#myBtn')) {
            $('#myDropdown').toggle();
        }
    });
});
</script>