Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 单击href in li标记时链接未打开_Javascript_Html_Css - Fatal编程技术网

Javascript 单击href in li标记时链接未打开

Javascript 单击href in li标记时链接未打开,javascript,html,css,Javascript,Html,Css,我用的是小麻烦但大问题 当我点击链接a href它不会打开时,这些代码看起来正确吗 所以我插入了所有的css,js-这些可能会触发这个无法打开的链接。但在我看来,仅使用a href应该可以正常工作,对吗 我不确定这只会发生在我身上,还是其他人身上 [].slice.call(document.querySelectorAll('.dropdown.nav link')).forEach(函数(el){ el.addEventListener('click',onClick,false); })

我用的是小麻烦但大问题

当我点击链接a href它不会打开时,这些代码看起来正确吗

所以我插入了所有的css,js-这些可能会触发这个无法打开的链接。但在我看来,仅使用a href应该可以正常工作,对吗

我不确定这只会发生在我身上,还是其他人身上

[].slice.call(document.querySelectorAll('.dropdown.nav link')).forEach(函数(el){
el.addEventListener('click',onClick,false);
});
函数onClick(e){
e、 预防默认值();
var el=this.parentNode;
包含('show-submenu')?隐藏子菜单(el):显示子菜单(el);
}
功能显示子菜单(el){
el.classList.add('show-submenu');
document.addEventListener('click',函数onDocClick(e){
e、 预防默认值();
如果(标高包含(如目标)){
返回;
}
document.removeEventListener('click','onDocClick');
hideSubMenu(el);
});
}
功能隐藏子菜单(el){
el.classList.remove('show-submenu');
}
/*页*/
html{
框大小:边框框;
}
*, 
*:之前,
*:之后{
框大小:继承;
}
身体{
背景色:#3498db;
}
.导航{
宽度:320px;
边距:0自动0自动;
文本对齐:居中;
}
/*航行*/
.导航{
字体系列:乔治亚,Arial,无衬线;
字体大小:16px;
}
.导航项目{
填充:0;
列表样式:无;
}
.导航项目{
显示:内联块;
右边距:8px;
}
.导航项:最后一个子项{
右边距:0;
}
.导航链路,
.导航链接:链接,
.导航链接:已访问,
.导航链接:激活,
.子菜单链接,
.子菜单链接:链接,
.子菜单链接:已访问,
.子菜单链接:活动{
显示:块;
位置:相对位置;
字体大小:14px;
字母间距:1px;
光标:指针;
文字装饰:无;
大纲:无;
}
.导航链路,
.导航链接:链接,
.导航链接:已访问,
.导航链接:激活{
颜色:#fff;
字体大小:粗体;
}
.nav链接::之前{
内容:“;
位置:绝对位置;
最高:100%;
左:0;
宽度:100%;
高度:3倍;
背景:rgba(0,0,0,0.2);
不透明度:0;
-webkit转换:转换(0,10px);
转换:转换(0,10px);
过渡:不透明度0.3s缓和,变换0.3s缓和;
}
.nav链接:悬停::之前,
.nav链接:悬停::之前{
不透明度:1;
-webkit转换:转换(0,5px);
转换:转换(0,5px);
}
.下拉列表{
位置:相对位置;
}
.下拉菜单.导航链接{
右侧填充:15px;
高度:17px;
线高:17px;
}
.dropdown.nav link::after{
内容:“;
位置:绝对位置;
顶部:6px;
右:0;
边框:5px实心透明;
边框顶部颜色:#fff;
}
.子菜单{
位置:绝对位置;
最高:100%;
左:50%;
z指数:100;
宽度:200px;
左边距:-100px;
背景:#fff;
边界半径:3px;
线高:1.46667;
页边顶部:-5px;
盒影:0.08像素rgba(0,0,0,3);
不透明度:0;
-webkit变换:平移(0,0)比例(.85);
变换:平移(0,0)比例(.85);
过渡:变换0.1s缓减,不透明度0.1s缓减;
指针事件:无;
}
.子菜单::之后,
.子菜单::之前{
内容:“;
位置:绝对位置;
底部:100%;
左:50%;
左边距:-10px;
边框:10px实心透明;
身高:0;
}
.子菜单::之后{
边框底色:#fff;
}
.子菜单::之前{
左边距:-13px;
边框:13px实心透明;
边框底色:rgba(0,0,0,1);
-webkit过滤器:模糊(1px);
滤镜:模糊(1px);
}
.子菜单项{
列表样式:无;
填充:10px0;
}
.子菜单项{
显示:块;
文本对齐:左对齐;
}
.子菜单链接,
.子菜单链接:链接,
.子菜单链接:已访问,
.子菜单链接:活动{
颜色:#3498db;
填充:10px 20px;
}
.子菜单链接:悬停{
文字装饰:下划线;
}
.子菜单分隔符{
身高:0;
利润率:12像素10像素;
边框顶部:1px实心#eee;
}
.显示子菜单.子菜单{
不透明度:1;
-webkit转换:转换(0,25px)比例(1);
转换:转换(0,25px)比例(1);
指针事件:自动;
}


  • 信息

  • 似乎
    e.preventDefault()导致问题。请将其从以下位置删除:

    function showSubMenu(el){
        el.classList.add('show-submenu');
        document.addEventListener('click', function onDocClick(e){
            e.preventDefault(); //this line
            if(el.contains(e.target)){
                return;
            }
            document.removeEventListener('click', onDocClick);
            hideSubMenu(el);
        });
    }
    
    它现在应该像您所期望的那样打开链接

    说明:

    看一看。您可以看到添加
    e.preventDefault()将继续传播,直到停止

    因此,如果您阻止父元素上的默认
    事件
    ,那么它也将传播到所有子元素。这意味着
    href
    的默认行为也将被阻止