Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.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 js中的事件冒泡问题 当我单击console中的div a时,它显示:_Javascript - Fatal编程技术网

Javascript js中的事件冒泡问题 当我单击console中的div a时,它显示:

Javascript js中的事件冒泡问题 当我单击console中的div a时,它显示:,javascript,Javascript,我想结果应该是 已单击A B被点击 这是我的想法:当单击div a时,document.getElementById(“a”).onclick被执行,然后document.getElementById(“b”).onclick被执行,因为我们有event.stopPropagation()它将停止在div b中,并且不会执行文档。单击,但它似乎不起作用,有人能帮我理解这里发生了什么吗?事件传播意味着事件将向上传播到祖先链,直到文档对象 因此,在您的情况下,附加到元素a和文档的事件都被激发。当您单

我想结果应该是

已单击A
B被点击


这是我的想法:当单击div a时,
document.getElementById(“a”).onclick
被执行,然后
document.getElementById(“b”).onclick
被执行,因为我们有
event.stopPropagation()
它将停止在div b中,并且不会执行
文档。单击
,但它似乎不起作用,有人能帮我理解这里发生了什么吗?

事件传播意味着事件将向上传播到祖先链,直到文档对象

因此,在您的情况下,附加到元素a和文档的事件都被激发。当您单击元素b时,将触发仅附加到元素b的事件,因为从该点开始将阻止传播

函数(事件)
事件
是形式参数,实际参数是什么

实际参数是由浏览器创建的事件对象。对于单击事件,它将是的实例

当我点击diva。。。我想结果应该是

您单击了
b
的父级。事件从目标向上传播DOM树,因此它永远不会触及
b
。传播阶段将从
a
开始,并通过每个父级向上移动,直到到达文档


如果您单击了
b
,则
stopPropagation
方法将阻止事件冒泡,并且您将只在输出中看到“b已单击”。

事件
是浏览器事件。您无法真正更改它,但可以使用闭包或数据属性将更多数据传递到事件处理程序中。
单击A得到正确的结果。事件将向上冒泡,直到到达文档的根元素。如果停止传播,将阻止它向上冒泡到其父元素。
如果单击
b
,它将向上冒泡到
a
,然后到
正文
。但是您在
b
上停止传播,因此唯一的输出应该是

A is clicked
Document is clicked
事件
对象本身在每个浏览器中都是不同的,尽管它有一个不同的定义。一些浏览器不支持
stopPropagation
preventDefault
方法或其他属性(例如,较旧的IE不完全支持DOM级别2规范)。

关于事件的一个极好的例子。
function method(int num){ //num is the formal
/*implementation*/
}

//in main
method(42); //42 is the actual
A is clicked
Document is clicked
B is clicked