【问题标题】:SVG - click is not a function [duplicate]SVG-单击不是功能[重复]
【发布时间】:2016-09-26 21:43:57
【问题描述】:

我有一个这样的元素。

<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()

它会抛出一个错误,点击不是一个函数。

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

【问题讨论】:

  • 试试$('#box_w').click()
  • 为什么不直接调用函数呢?
  • click() 是 HTML method,它不适用于 SVG 元素。

标签: javascript jquery svg


【解决方案1】:

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

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

这就是 click() 函数在底层所做的所有事情。

这是一个例子:

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>

【讨论】:

  • 这应该是公认的答案
【解决方案2】:

尝试使用onclick 而不是click

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

请记住,我们在这里所做的是调用形状的接口。所以onclick需要在svg中定义,因为它在问题中:

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

【讨论】:

  • 在 Chrome 64.0.3282.186 中定位具有 id 的矩形时,这似乎不起作用
  • 这根本行不通。 onclick is not a function
  • 注意他的造型有这样的功能onclick="recordResponseKeyboard('W');"
猜你喜欢
  • 2013-06-12
  • 1970-01-01
  • 1970-01-01
  • 2020-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多