Javascript 使用window.onclick隐藏div时出现问题

Javascript 使用window.onclick隐藏div时出现问题,javascript,html,function,var,Javascript,Html,Function,Var,当我在父分区外单击时,我试图将一个分区隐藏在另一个分区内。问题是,我不想使用ID,因为我希望这是一个全局函数(对不起,我的英语) 现在,我选择父元素onclick=“myfunction(this)”中使用的子元素,然后(在脚本中)使用element.children[0]执行一个变量来显示子元素 问题是当我试图隐藏在父项之外的子项单击时,因为变量依赖于myfunction 函数myfunction(elmnt){ var child=elmnt.childs[0]; 如果(child.sty

当我在父分区外单击时,我试图将一个分区隐藏在另一个分区内。问题是,我不想使用ID,因为我希望这是一个全局函数(对不起,我的英语)

现在,我选择父元素
onclick=“myfunction(this)”
中使用的子元素,然后(在脚本中)使用
element.children[0]
执行一个变量来显示子元素

问题是当我试图隐藏在父项之外的子项单击时,因为变量依赖于
myfunction

函数myfunction(elmnt){
var child=elmnt.childs[0];
如果(child.style.display==“无”){
child.style.display=“块”}
否则{
child.style.display=“无”;};
//window.onclick=函数(事件){child.style.display=“none”;}
}

孩子1
孩子2
孩子3

Manul给出了正确答案,但在窗口上设置事件不正确

需要处理执行处理程序的需要。以避免接口中出现错误和不必要的负载

var globalEventSet=false;
函数myfunction(elmnt,e){
e、 停止传播();
var child=elmnt.childs[0];
如果(child.style.display==“无”){
如果(!globalEventSet){
setEventOnWindow()
globalEventSet=true;
}
child.style.display=“block”;
} 
否则{
child.style.display=“无”;
}
}
函数setEventOnWindow(){
让回调=函数(ev){
var childList=document.querySelectorAll('.child');
if(childList!=null){
[…childList].forEach(函数(子函数){
child.style.display=“无”;
})
} 
log(“我只工作一次(;”);
removeEventListener('click',回调);
globalEventSet=false;
}
window.addEventListener('click',回调);
}

孩子1
孩子2
孩子3