Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.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 addEventListener未使用其函数_Javascript_Events_Frontend - Fatal编程技术网

Javascript addEventListener未使用其函数

Javascript addEventListener未使用其函数,javascript,events,frontend,Javascript,Events,Frontend,本质上,每当有人单击“createTextButton”时,“currentTool”就会切换到与该按钮关联的功能。然后,当有人单击绘图表面时,分配给currentTool的函数应该由addEventListener调用,但它不是 我是不是遗漏了什么?Mozilla文档称AddEventListener可以接收对象或函数作为其第二个参数。在Node.JS中,我一直使用这样的回调。这里有什么不同吗 var currentTool = null; var svg = document.getE

本质上,每当有人单击“createTextButton”时,“currentTool”就会切换到与该按钮关联的功能。然后,当有人单击绘图表面时,分配给currentTool的函数应该由addEventListener调用,但它不是

我是不是遗漏了什么?Mozilla文档称AddEventListener可以接收对象或函数作为其第二个参数。在Node.JS中,我一直使用这样的回调。这里有什么不同吗

 var currentTool = null;

 var svg = document.getElementById("drawing-surface");

 var createTextButton = document.getElementById("createTextButton");

 createTextButton.addEventListener("mouseup", function(event) {
     currentTool = createText;
 });

 svg.addEventListener("mouseup", currentTool);

 function createText(event) {
     ...
 }

您正在将
null
传递给
svg.addEventListener
。给定的值是调用函数时变量的值;如果以后更改,这不会影响任何事情

要实现所需功能,可以将事件侦听器包装到另一个函数中:

svg.addEventListener("mouseup", function(event) {
  if(currentTool != null)
    currentTool(event);
});

这是因为现在我们在每次事件发生时都引用变量
currentTool
,而不是仅在调用
addEventListener
时才引用。

null
传递给
svg.addEventListener
。给定的值是调用函数时变量的值;如果以后更改,这不会影响任何事情

要实现所需功能,可以将事件侦听器包装到另一个函数中:

svg.addEventListener("mouseup", function(event) {
  if(currentTool != null)
    currentTool(event);
});
这是因为现在我们在每次事件发生时引用变量
currentTool
,而不是仅在调用
addEventListener
时才引用。

您在哪里定义了“createText”?您在哪里定义了“createText”?