Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.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 如何通过单击下拉菜单的外部来关闭下拉菜单?_Javascript - Fatal编程技术网

Javascript 如何通过单击下拉菜单的外部来关闭下拉菜单?

Javascript 如何通过单击下拉菜单的外部来关闭下拉菜单?,javascript,Javascript,我创建的网站不使用jquery库,只使用纯javascript 大多数用户的互联网带宽都很低,我尽量保持它的干净 我只使用了很少的函数,这就是我决定不使用jquery的原因 我创建了这个折叠菜单,当用户单击容器时,它可以打开和关闭容器。 我还想在用户在其外部单击时将其关闭。 我对javascript不是很有经验,如果有人能给我一些想法,我会非常感激 多谢各位 函数myFunction(){ var x=document.getElementById(“演示”); if(x.className.

我创建的网站不使用jquery库,只使用纯javascript

大多数用户的互联网带宽都很低,我尽量保持它的干净

我只使用了很少的函数,这就是我决定不使用jquery的原因

我创建了这个折叠菜单,当用户单击容器时,它可以打开和关闭容器。 我还想在用户在其外部单击时将其关闭。 我对javascript不是很有经验,如果有人能给我一些想法,我会非常感激

多谢各位

函数myFunction(){
var x=document.getElementById(“演示”);
if(x.className.indexOf(“w3显示”)=-1){
x、 className+=“w3显示”;
}否则{
x、 className=x.className.replace(“w3 show”,“w3 show”);
}
}

可点击下拉列表
单击按钮打开下拉菜单

点击我!
要检测元素外部的点击,您需要捕捉主体本身的点击:

函数myFunction(t){
var x=document.getElementById(“演示”);
if(t&&x.className.indexOf(“w3显示”)=-1){
x、 className+=“w3显示”;
}否则{
x、 className=x.className.replace(“w3 show”,“w3 show”);
}
event.stopPropagation();
}

可点击下拉列表
单击按钮打开下拉菜单

点击我!
您可以使用简化逻辑。当您单击子菜单选项时,是否打算关闭此功能?@larz由于事件传播,您可以禁用此功能it@Lashane谢谢你,它工作正常,接受了你的建议answer@Lashane在我测试了您建议的解决方案后,我发现其他函数不起作用。我读了这篇文章,似乎停止活动不是一个好的做法propagation@John解决方案是检测主体上的点击,事件传播是另一个问题,声明全局处理程序并检测其中的点击