Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.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 onclick和方法_Javascript_Svg - Fatal编程技术网

javascript onclick和方法

javascript onclick和方法,javascript,svg,Javascript,Svg,我将SVG.JS框架用于JS,我想为onclick事件添加方法,用于selectColor元素 changeCircleColor:function(){ this.circleColor=提示(“为圆选择颜色”); }, 视图:函数(){ var view=SVG('viewCircle')。大小(300300)。样式({ 背景:“黑色” }); var circle=view.circle(280.attr)({ 填充:这是圆环色, cx:“150”, 赛义德:“150” }); var s

我将SVG.JS框架用于JS,我想为
onclick
事件添加方法,用于
selectColor
元素

changeCircleColor:function(){
this.circleColor=提示(“为圆选择颜色”);
},
视图:函数(){
var view=SVG('viewCircle')。大小(300300)。样式({
背景:“黑色”
});
var circle=view.circle(280.attr)({
填充:这是圆环色,
cx:“150”,
赛义德:“150”
});
var selectColor=view.rect(30,30).attr({
填充:“白色”,
x:“270”,
y:“270”,
笔画:“黑色”,
onclick:“this.changeCircleColor()”
})
},
但脚本找不到它

CircleEditor.html:1未捕获类型错误:this.changeCircleColor不可用 函数 在SVGRectElement.onclick(CircleEditor.html:1)


更新

您的问题始于将函数处理程序传递给SVG元素的方式

在attr()方法上使用字符串集

如果你使用字符串,你能做的事情非常有限。这对于小示例来说是可以的,或者如果您只传递一小段代码,通常是整个函数

当然,该函数应该是独立的和自执行的,没有任何外部依赖性

但要了解更多信息,您应该避免使用attr()并使用建议的适当方法绑定svg.js上的事件:

您可以在文档页面中找到详细信息:

现在,关于这个内容,当点击事件被触发时,它会被更改,所以您应该注意代码的这一部分

设置处理程序的正确方法如下:

element.on('click', this.changeCircleColor);
不像字符串,而是对函数(实际上是函数体)的引用

因此,您将把当前对象的函数指定为svg元素的事件处理程序

如果在事件处理程序函数中使用当前对象,则甚至应将函数绑定到对象:

element.on('click', this.changeCircleColor.bind(this));

更新

您的问题始于将函数处理程序传递给SVG元素的方式

在attr()方法上使用字符串集

如果你使用字符串,你能做的事情非常有限。这对于小示例来说是可以的,或者如果您只传递一小段代码,通常是整个函数

当然,该函数应该是独立的和自执行的,没有任何外部依赖性

但要了解更多信息,您应该避免使用attr()并使用建议的适当方法绑定svg.js上的事件:

您可以在文档页面中找到详细信息:

现在,关于这个内容,当点击事件被触发时,它会被更改,所以您应该注意代码的这一部分

设置处理程序的正确方法如下:

element.on('click', this.changeCircleColor);
不像字符串,而是对函数(实际上是函数体)的引用

因此,您将把当前对象的函数指定为svg元素的事件处理程序

如果在事件处理程序函数中使用当前对象,则甚至应将函数绑定到对象:

element.on('click', this.changeCircleColor.bind(this));

因为
指向窗口,但不指向对象。。如果将此对象指定给
窗口
,则可以通过
onclick
属性调用它。因为
指向窗口而不是对象。。如果您将此对象指定给
窗口
,因为您可以通过
onclick
属性调用它。您能解释更多吗?我想这和我的回答是一样的。Attribute
onClick
get string
“this.changecirlecolor()”
,这样你就可以;不要将其绑定为空,事件处理程序会获取一个事件,这样您就可以将其绑定到对象。对了,这一部分似乎应该得到更详细的解释。我试着去做并更新我的答案。谢谢你告诉我这件事。请看一看,如果有什么不对劲,请告诉我。看起来更好:)你能解释更多吗?我想这和我的回答是一样的。Attribute
onClick
get string
“this.changecirlecolor()”
,这样你就可以;不要将其绑定为空,事件处理程序会获取一个事件,这样您就可以将其绑定到对象。对了,这一部分似乎应该得到更详细的解释。我试着去做并更新我的答案。谢谢你告诉我这件事。请看一看,如果有什么问题请告诉我。看起来更好:)