提问者:小点点

svg-click不是函数


我有这样的元素。

<g id="box_w" onclick="recordResponseKeyboard('W');" onmousedown="svgFill('W');" onmouseup="svgUnfill('W');"> 
    <rect fill="#FFFFFF" height="68.522" stroke="#FFFFFF" stroke-miterlimit="10" width="119.297" x="306.673" y="384.406"></rect> 
</g>

从chrome控制台,我可以找到元素。

document.getElementById('box_w')

如果调用单击事件,

document.getElementById('box_w').click()

它会抛出一个错误,即click不是一个函数。

如何使用控制台点击元素。?


共2个答案

匿名用户

尝试使用onclick而不是click

document.querySelector("g#box_w").onclick();

记住,我们在这里做的是调用形状的接口。 因此需要在svg中定义onclick,就像问题中的一样:

<g id="box_w" onclick="recordResponseKeyboard('W');"></g>

匿名用户

click()是一个仅在HTML元素上定义的函数。 幸运的是,这是一个方便的函数,我们可以很容易地实现它。

document.getElementById('box_w').dispatchEvent(new Event('click'));

这就是click()函数在引擎盖下面所做的全部工作。

下面是一个例子:

null

document.getElementById('box_w').dispatchEvent(new Event('click'));
<g id="box_w" onclick="alert('hi')"> 
    <rect fill="#FFFFFF" height="68.522" stroke="#FFFFFF" stroke-miterlimit="10" width="119.297" x="306.673" y="384.406"></rect> 
</g>