我有一個腳本,添加一個單擊事件到一個div添加一個新的元素。然後該函數創建並添加該元素,然後應該從Div中刪除點擊,因此不會添加更遠的元素。我明白爲什麼removeEventListener不工作,但我不知道如何解決它。下面是代碼,給我的問題行:removeEventListner事件已被觸發
function enable_add(tag, type){return function(e){add_element(e, tag, type);};} //Function call for adding new elements
document.getElementById("body_visual_editor").addEventListener("click", enable_add(tag, type));
document.getElementById("body_visual_editor").removeEventListener("click", enable_add());
消防錯誤說功能(五)被指定爲事件,不enable_add,所以remove事件沒有找到合適的事件。我如何編寫這三行,以便它們都能正常工作?
請不要javascript庫。
更新:所以我就重寫它像這樣sovled的一部開拓創新isue:
var handler;
function enable_add(tag, type) //Function call for adding new elements
{
handler= function handler(e){add_element(e, tag, type);};
return handler
}
document.getElementById("body_visual_editor").addEventListener("click", enable_add(tag, type));
document.getElementById("body_visual_editor").removeEventListener("click", handler);
但現在它ETTING的處理程序創建的add_element呼叫的要素,以及一個上點擊。我如何解決這個問題?
enable_edd應該返回偵聽器函數。這個答案解決了這個問題。謝謝。 – Zaper127
說得太快。現在我有另一個問題。當我嘗試設置處理程序變量時,它運行add_element()並創建一個空元素,然後點擊它創建第二個元素。我如何阻止?我將編輯我的答案以顯示我的更改。 – Zaper127
@ Zaper127可以創建jsfiddle http://jsfiddle.net來演示嗎? – guest271314