我在JS中使用SVG.JS框架,我想为43
元素添加onclick
事件的方法。
selectColor
但是脚本无法找到它。
CircleEditor.html:1未捕获的TypeError:this.changeCircleColor不是 一个功能 在SVGRectElement.onclick(CircleEditor.html:1)
答案 0 :(得分:2)
<强>更新强>
您的问题始于将函数处理程序传递给SVG元素的方式。
您使用 attr()方法设置的字符串。
如果您使用字符串,那么您可以做的事情非常有限。对于小例子或者只传递一小段代码(通常是整个函数),这是可以的。
当然,该函数应该是隔离的并且是自执行的,没有任何外部依赖性。
但是对于更多内容,你应该避免 attr()并使用建议的正确方法来绑定 svg.js上的事件:
element.on('click', function() {
// your code here.
});
您可以在文档页面中找到详细信息:http://svgjs.com/events/
现在关于此内容,当点击事件被触发时会发生变化,因此您应该注意代码的这一部分。
设置处理程序的正确方法如下:
element.on('click', this.changeCircleColor);
不像字符串,而是对函数的引用(实际上是函数体)。
因此,您要将当前对象的函数指定为svg元素的事件处理程序。
如果您在事件处理函数中使用当前对象,您甚至应该将该函数绑定到您的对象:
element.on('click', this.changeCircleColor.bind(this));