2015-10-20 1 views
2

Проблема: В строке, добавляющей прослушиватель событий к элементу с идентификатором «g1», вызывается fnk, когда эта строка выполняется, когда добавляется прослушиватель событий. Я хочу, чтобы функция ФНКА называться только тогда, когда событие происходит размытие с g1addEventListener - Указание ссылки на функцию с атрибутами

function fnk(t) 
    { 
     //I play with t here 
    } 

    var x = document.getElementById("g1") ; 
    x.addEventListener("blur", fnk(x),false) ; 
    x.focus() ; 

Я понимаю, что addEventListener принимает ссылку на функцию, а не вызов функции.

Примечание. Мое понимание ссылки на функцию («fnk») заключается в том, что это имя функции без следующих «()» и относится только к функции и вызову функции, то есть к имени функции, за которым следует «() », то есть fnk(), вызывает функцию.

Поэтому правильный путь будет

x.addEventListener("blur", fnk, false) ; 

Решает проблему Fnk вызывается при добавлении слушателя событий. Проблема с приведенной выше строкой заключается в том, что fnk вызывается при размытии без передачи аргумента «t», что приводит к ошибке «t не определено».

ответ

1

Вы можете обойти это, окружая его с анонимной функцией:

x.addEventListener("blur", function(){ fnk(x) },false) ; 
+0

Пожалуйста, вы можете объяснить, что использование ложной/верно в конце концов? – Abhinay

+0

@Abhinay Это [необязательное поле для 'useCapture'] (https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener). –

+0

Спасибо, я также понял, что «;» не требуется в анонимной функции. как в x.addEventListener («размытие», функция() {fnk (x) **; **}, false); –

Смежные вопросы