我有一个脚本,添加一个单击事件到一个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