Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/33.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 SVG图像未在onclick事件中传递给函数_Javascript_Html_Svg - Fatal编程技术网

Javascript SVG图像未在onclick事件中传递给函数

Javascript SVG图像未在onclick事件中传递给函数,javascript,html,svg,Javascript,Html,Svg,我有一个svg,它有一个onclick事件,但每当它被点击时,它就会被点击事件。target是一个路径,它被点击了,而不是整个svg,这是为什么?svg就是这样工作的吗?这是我的密码 在my Js Iconsole.log()svg中,无论何时单击,您都可以检查它,但您得到的不是整个svg,而是已单击的路径(某些部分) let svg=document.body.querySelector('.notebook'); addEventListener(“单击”,openHome) 让div2=d

我有一个svg,它有一个
onclick
事件,但每当它被点击时,它就会被点击
事件。target
是一个
路径
,它被点击了,而不是整个
svg
,这是为什么?svg就是这样工作的吗?这是我的密码

在my Js I
console.log()
svg中,无论何时单击,您都可以检查它,但您得到的不是整个svg,而是已单击的路径(某些部分)
let svg=document.body.querySelector('.notebook');
addEventListener(“单击”,openHome)
让div2=document.body.querySelector('.div2')
函数openHome(事件){
console.log(event.target)
div2.innerText=event.target;
}

是,event.target是您单击的路径,而这是svg元素:

let svg=document.body.querySelector('.notebook');
addEventListener(“单击”,openHome)
让div2=document.body.querySelector('.div2')
函数openHome(事件){
console.log(event.target)
div2.innerText=this.outerHTML;
}

拨弄

这是预期的行为。
事件。目标是触发事件的元素。如果单击了
路径
,则
事件目标
路径
。然后事件冒出气泡,直到它到达收听它的
svg
。但是
事件.target
仍然是原始元素


在别处查看或搜索事件传播是如何工作的。

是否将
设为全局函数?我还没有测试,只是想知道。是的,我想soYeah同意你的观点,只是测试了一下,所以还有别的。。。。您得到的输出是什么?如果你可以在你的问题中发布一个例子,如果可能的话,每次我点击你的svg(这里),我都会得到一个脚本超时。可能是一些不可预见的递归正在进行,或者引擎中存在错误的无限循环。很可能是前者。见下面@gaetanoM的答案;它解释了递归的性质——但是由于冒泡,因为正如上面所说的,您必须为svgso使用
this
,outerHTML做什么?如果你能检查一下你的fiddle演示,看看用event.target打印的是什么,它不是打印整个svg(只是单击的路径)?是因为onclick事件被输入到svg的子级,而路径对此做出响应吗?是的,它被输入了。。。。但是,虽然这指的是svg,但event.target指的是您单击的路径