Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.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_Onclicklistener - Fatal编程技术网

Javascript 函数在单击事件之前启动

Javascript 函数在单击事件之前启动,javascript,onclicklistener,Javascript,Onclicklistener,我的问题是,为什么即使closeButton里面也有一个click事件,这个click事件发生在第一个匿名函数被调用时 有没有办法防止这种行为?我在这里的目标是,第二个函数上的单击事件正好发生在第二次单击之后,如果我单击searchToggler,它将调用该函数,当我单击任意位置时,它将调用第二次单击函数 const searchToggler=document.querySelector.search-toggler; const searchWrapper=document.querySel

我的问题是,为什么即使closeButton里面也有一个click事件,这个click事件发生在第一个匿名函数被调用时

有没有办法防止这种行为?我在这里的目标是,第二个函数上的单击事件正好发生在第二次单击之后,如果我单击searchToggler,它将调用该函数,当我单击任意位置时,它将调用第二次单击函数

const searchToggler=document.querySelector.search-toggler; const searchWrapper=document.querySelector.search-wrapper; const searchImage=document.querySelector.search-icon; searchToggler.addEventListenerclick,函数{ searchWrapper.classList.togglesearch-wrapper-active; searchImage.classList.togglesearch-active; 关闭按钮; 功能关闭按钮{ $document.clickfunction e{ console.loge.target; } } } 将closeClick函数放在外部,因为它只需要创建一次。然后在需要时添加/删除事件侦听器:

searchToggler.addEventListenerclick,函数{ searchWrapper.classList.togglesearch-wrapper-active; searchImage.classList.togglesearch-active; //在超时后使用事件侦听器添加到窗口,以防止单击立即触发 setTimeoutfunction{ window.addEventListener'click',closeClick; }, 100; } 功能关闭点击{ console.loge.target; //如果需要,请再次将其拆下 移除EventListener“单击”,关闭单击; }
我认为函数closeButton应该在事件监听器之外,但是closeButton必须在第一个函数被激活时启动,但即使在这里,当我单击第一个函数触发器时也会出现console.log,这可能是因为鼠标向上触发了单击。我已将答案调整为在addEventListener周围有一个超时,请检查这是否有帮助