Javascript 为什么不';当使用事件侦听器向上冒泡或向下传播时,我是否看到多个console.log()操作?

Javascript 为什么不';当使用事件侦听器向上冒泡或向下传播时,我是否看到多个console.log()操作?,javascript,addeventlistener,Javascript,Addeventlistener,const containers=document.querySelectorAll('div.container'); containers.forEach(container=>{ container.addEventListener('click',e=>{ log(“我被解雇了”); },对); }); //containers.forEach(container=>{ //container.addEventListener('click',e=>{ //log(“我被解雇了”); /

const containers=document.querySelectorAll('div.container');
containers.forEach(container=>{
container.addEventListener('click',e=>{
log(“我被解雇了”);
},对);
});
//containers.forEach(container=>{
//container.addEventListener('click',e=>{
//log(“我被解雇了”);
//(不正确),;
// });
正文{
字体系列:Lato;
}
.组{
显示器:flex;
证明内容:中心;
对齐项目:居中;
高度:100vh;
}
.集装箱{
背景色:#1F;
颜色:#ccc;
显示器:flex;
弯曲方向:立柱;
证明内容:中心;
对齐项目:居中;
高度:100px;
宽度:100px;
利润率:0.30px;
光标:指针;
}
.容器h2{
保证金:0;
边缘底部:5px;
}
跨度{
字体大小:12px;
}

A.
字幕
B
字幕
C
字幕
无论我是冒泡向上还是向下传播,并且在事件处理程序中放置了一条console.log消息,console.log()消息都只会触发一次。它不是应该在每次碰到DOM树中的新元素时触发吗

您的
div.container
元素都不在其他元素中。捕获和传播发生在祖先/后代层次结构中,而不是在兄弟姐妹或其他类似的层次结构中

如果将它们放在一起,您将看到多条消息:

const containers=document.querySelectorAll('div.container');
containers.forEach(container=>{
container.addEventListener('click',e=>{
log(“我被解雇了”);
},对);
});
//containers.forEach(container=>{
//container.addEventListener('click',e=>{
//log(“我被解雇了”);
//(不正确),;
// });
正文{
字体系列:Lato;
}
.组{
显示器:flex;
证明内容:中心;
对齐项目:居中;
高度:100vh;
}
.集装箱{
背景色:#1F;
颜色:#ccc;
显示器:flex;
弯曲方向:立柱;
证明内容:中心;
对齐项目:居中;
高度:100px;
宽度:100px;
利润率:0.30px;
光标:指针;
}
.容器h2{
保证金:0;
边缘底部:5px;
}
跨度{
字体大小:12px;
}

A.
字幕
B
字幕
C
最里面-点击这里

欢迎使用堆栈溢出!“”在此处查看操作“*”*请在此处放置可运行的示例,使用堆栈片段(
[]
工具栏按钮;)进行现场操作。每次单击我都会看到两个日志。。。也许您的浏览器正在将它们与左边空白处的数字组合在一起?嗯,我在@Scott的编辑之前做过…@HereticMonkey我不知道你为什么每次点击都会看到两条消息。你不应该,我不是。@ScottMarcus好吧,你把一个注释掉了…@ScottMarcus看看编辑历史--你会发现我放了一个片段,两个都没有注释--这就是我的注释所指的。我不从外部来源复制,因为我觉得它侵犯了版权(但IANAL)。