Как передать событие следующей функции?

Как передать событие event следующей функции?
В нижнем примере нужно в функции clicker2 вывести: <p id='a'>Кликни на меня, а затем на кнопку.</p>.

<p id='a'>Кликни на меня, а затем на кнопку.</p>
<input id='b' type='button' value='Вывести в консоль'>
<script>
document.getElementById('a').addEventListener('click', clicker);
function clicker(e){  
  let target = e.target;
  document.getElementById('b').addEventListener('click', clicker2(event, target));
}

function clicker2(e, target){
  console.log(target);
}
</script>


Этот пример на codepen https://codepen.io/workcode/pen/NWNdOKW
  • Вопрос задан
  • 116 просмотров
Решения вопроса 2
kocherman
@kocherman
/** Здесь мы передаём функцию clicker как параметр, не вызывая её  */
document.getElementById('A').addEventListener('click', clicker1);
// Функция clicker1() будет вызываться когда нажимаем на кнопку A
function clicker1(event1){  
  let target1 = event1.target;
  // Здесь мы вызываем функцию nonClicker(), которая возвращает функцию clicker2(), которую передаём параметром к addEventListener
  document.getElementById('B').addEventListener('click', nonClicker(event1, target1));
}
// Эта функция nonClicker() вызывается не по клику на B, но вызывается по клику на A
function nonClicker(event1,target1){
   // Функция clicker2() будет вызываться при клике на кнопку b
   return function clicker2(event2){ 
     // В этой функции доступны все три переменные
     console.log(event1,event2,target1);
   }
}
Ответ написан
RAX7
@RAX7
document.getElementById('b').addEventListener('click', clicker2.bind(null, target));

function clicker2(target, e){
либо
document.getElementById('b').addEventListener('click', () => clicker2(event, target));
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы