У меня есть сценарий, который добавляет событие click в 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, поэтому событие удалить не найти нужное событие. Как написать эти три строки, чтобы все они работали правильно?
Никаких библиотек javascript, пожалуйста.
Update: Так что я получил Orignal isue sovled переписав его так:
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);
Но теперь она создает элемент на вызов add_element для Эттинг обработчика, и один по щелчку. Как это исправить?
Предполагалось, что функция enable_edd вернет функцию прослушивания. Этот ответ решил проблему. Спасибо. – Zaper127
Говорил слишком рано. теперь у меня другая проблема. Когда я пытаюсь установить переменную обработчика, она запускает add_element() и создает пустой элемент, а затем на клик создает второй элемент. Как это остановить? Я отредактирую свой ответ, чтобы показать свои изменения. – Zaper127
@ Zaper127 Может создать jsfiddle http://jsfiddle.net, чтобы продемонстрировать? – guest271314