Javascript SVG图像未在onclick事件中传递给函数
我有一个svg,它有一个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
onclick
事件,但每当它被点击时,它就会被点击事件。target
是一个路径
,它被点击了,而不是整个svg
,这是为什么?svg就是这样工作的吗?这是我的密码
在my Js Iconsole.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指的是您单击的路径