Javascript 为什么在代理事件不起作用的情况下单击?

Javascript 为什么在代理事件不起作用的情况下单击?,javascript,onclick,click,Javascript,Onclick,Click,我尝试绑定文档以委派我的单击事件,如果用户单击loginpage的部分,它应该消失或被删除,但除了我单击loginpage时的signinpage,其他部分仍然会被删除(如输入)。它应该在div标志页上冒泡,否则它就不会那样工作了? 这让我困惑了两天,请帮我把它修好 const loginbtn=document.getElementById('loginbtn') const whitepart=document.getElementById('whitepart') const loginp

我尝试绑定文档以委派我的单击事件,如果用户单击loginpage的部分,它应该消失或被删除,但除了我单击loginpage时的signinpage,其他部分仍然会被删除(如输入)。它应该在div标志页上冒泡,否则它就不会那样工作了? 这让我困惑了两天,请帮我把它修好

const loginbtn=document.getElementById('loginbtn')
const whitepart=document.getElementById('whitepart')
const loginpage=document.createElement('div')
loginpage.id=“loginpageid”
loginbtn.addEventListener('单击',()=>{
whitepart.appendChild(登录页面)
loginpage.innerHTML=`
`
const signingpage=document.getElementById('sign\u in\u out')
如果(!!签名页){
document.addEventListener('单击',(e)=>{
如果(例如,目标!==签名页){
loginpage.removechild(签名页)
}
})
}

在您的click listener中更改
e.target!==signinpage
e.target.closest(“#sign#u in_u”)
,因此如果用户在登录页面内单击,
e.target.closest(#sign_in_u out”)
将返回
sign#in__out
div引用,否则该引用将为空

当您使用
e.target
时,它可以是任何内容,也可以是
img、表单或输入
,事件.target返回用户单击的项目。 事件接口的target属性是对调度事件的对象的引用

document.addEventListener('click', (e) => {
      if (e.target.closest("#sign_in_out") === null) {
        loginpage.removechild(signinpage)
      }
 })