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