2017-02-19 14 views
-1

У меня проблема с целью события. Я хочу проверить, какой элемент был нажат, но он не работает. Каково решение этой проблемы?Цель события JavaScript

var prod = document.querySelectorAll("button"); 
 

 
function dodaj(e) { 
 
    var tar = e.target; 
 
    
 
    console.log(tar); 
 
} 
 

 

 
for(var i = 0; i < prod.length; i++) { 
 
    prod[i].addEventListener("click", function() { 
 
     dodaj(); 
 
    }, false); 
 
}

+0

Try: прод [я] .addEventListener ("клик", функция (е) { dodaj (е); }, ложь); – Hobroker

ответ

0

Проблема в том, что ваш обработчик события клика была анонимная функция, которая была положить в вызове фактической функции, которая выполняет работу (dodaj) и эта функция не получает ссылку на событие - анонимный функция был.

Вы можете изменить анонимную функцию, чтобы она получает событие, а затем передает его dodaj, как это:

prod[i].addEventListener("click", function(evt) { 
    dodaj(evt); 
}, false); 

Однако, поскольку эта функция «обертка» на самом деле не добавление какого-либо значения коды , вы можете/должны полностью удалить его и просто зарегистрировать действительную функцию обратного вызова в качестве обработчика события клика.

var prod = document.querySelectorAll("button"); 
 

 
function dodaj(e) { 
 
    console.log(e.target); 
 
} 
 

 
for(var i = 0; i < prod.length; i++) { 
 
    // When any button gets clicked, call the dodaj function 
 
    // directly. This is the function that will receive a 
 
    // reference to the click event. 
 
    prod[i].addEventListener("click", dodaj); 
 
}
<button id="one">Click Me</button> 
 
<button id="two">Click Me</button> 
 
<button id="three">Click Me</button> 
 
<button id="four">Click Me</button>

2

Вы не прошли ничего в dodaj. Вы можете просто передать dodaj прямо в addEventListener.

prod[i].addEventListener("click", dodaj, false); 

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

  • Нет связанных вопросов^_^