2017-03-01 75 views
0

從本質上講,無論何人點擊「createTextButton」,「currentTool」都會切換到與該按鈕相關的功能。然後,當有人點擊繪圖表面時,分配給當前工具的函數應該由addEventListener調用,但事實並非如此。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) { 
    ... 
} 
+0

你在哪裏定義了「createText」? –

回答

3

你傳遞給nullsvg.addEventListener。給出的值是函數調用時的變量的值;如果它後來改變,那不會影響任何東西。

達到你想要的東西,你可以用你的事件偵聽器的另一個功能:

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

這工作,因爲現在我們每一個事件發生時間參考變量currentTool而不是隻有當addEventListener是調用。