2017-08-09 65 views
0

我在Html canvas元素的click事件上添加了一個事件監聽器。 函數語句被多次執行。第一次的聲明執行一次,當我再次調用主fnction,點擊會導致同樣的功能,可以執行兩次,然後三次等等javascript addEventListener for click事件多次調用函數

這裏是聽者

function initializeNewGame() { 

     // Set block 
     cur = new Date(); 
     countDownDate = new Date(cur.getTime() + 5*60010).getTime(); 
     moves = 0; 
     BLOCK_WIDTH = Math.round(BLOCK_IMG_WIDTH/TOTAL_COLUMNS); 
     BLOCK_HEIGHT = Math.round(BLOCK_IMG_HEIGHT/TOTAL_ROWS); 

     document.getElementById("canJigsaw").addEventListener("click", myFunction); 

     function myFunction() { 
      moves = moves + 1; 

      } 

     SetImageBlock(); 

     DrawGame(); 
    } 
+2

你是否多次調用這段代碼 - 它每次都添加一個* new *事件處理函數。確保你只調用一次'addEventListener'位 – Jamiec

+0

@Jamiec:它工作。我添加了一個布爾值來確保函數不會被調用多次。謝謝 – yogas

回答

1

確保initializeNewGame只叫一次。每次調用它時,都會添加另一個點擊處理程序。這意味着可以每次點擊多次調用myFunction。\

嘗試在initializeNewGame中添加控制檯日誌以幫助檢測其是否被多次調用。