Есть ли способ зафиксировать событие внутри функции с использованием идентификатора или класса элемента

Я пытаюсь захватить событие onclick кнопки, используя его идентификатор внутри функции, а затем пытаюсь получить значение console.info! но я думаю, что, поскольку код захвата события находится внутри функции, он не обнаруживает, когда событие срабатывает! есть ли способ обойти это! Спасибо !

window.onload = xyz;

function xyz() {
click();
 
  }
 function click() {
    var x = document.querySelector("#btn");
    x.addEventListener("click", myfunction);
    console.info(x);}

function myfunction() {
  document.querySelector(".example").style.backgroundColor = "red";
  return 1;
}
<h2 class = "example">A heading with class = "example"</h2>

<p>Click the button to add a background color to the first element in the document with class = "example".</p>

<button id = "btn">Try it</button>

Похоже, ваш код будет работать, просто вызовите click после того, как элементы будут созданы. Хотя я не уверен, что именно такое "Значение", в которое вы хотите войти.

Teemu 21.11.2018 16:16

myfunction не равно myFunction - измените это, и он должен работать. Также вы никогда не вызываете функцию щелчка, чтобы привязать событие

Pete 21.11.2018 16:18

Во-первых, вы никогда не вызываете свою функцию click. Во-вторых, JS чувствителен к регистру, поэтому myfunction и myFunction не совпадают.

Smollet777 21.11.2018 16:19

@ Smollet777 Я отредактировал свою проверку вопроса даже после изменения имени и вызова функции с использованием window.location, она не запускается

Faizal Mohaideen Kadersha 21.11.2018 16:31

@pete я отредактировал свою проверку вопроса даже после изменения имени и вызова функции с использованием window.location, она не запускается

Faizal Mohaideen Kadersha 21.11.2018 16:31

вы по-прежнему не вызываете функцию щелчка - вы просто обернули ее и вызвали внешнюю функцию - ничто не вызывает функцию щелчка, которая ее связывает

Pete 21.11.2018 16:32

Это должно быть window.onload = click. Если вы не добавите click () в конец функции xyz, но это совершенно бесполезно.

Shilly 21.11.2018 16:37

@shilly я определил это так, как вы объяснили, но все еще не работает

Faizal Mohaideen Kadersha 21.11.2018 16:41

Просто удалите функцию оболочки щелчка и ваш код работает. «Значение» по-прежнему является проблемой, что означает значение «в»? Если это 1 в фактическом прослушивателе событий, он не будет работать. Функции прослушивателя событий вызываются очередью событий браузера, и они возвращаются в битовое пространство. Вы не можете получить возвращаемое значение из такого обратного вызова.

Teemu 21.11.2018 16:42

@pete, я думаю, вы правы, вот что я хотел узнать из этого поста

Faizal Mohaideen Kadersha 21.11.2018 16:42

@Teemu вот что я хотел знать, сработает ли событие щелчка, если оно заключено в функцию, остальная часть кода, который я только что написал, не имеет смысла

Faizal Mohaideen Kadersha 21.11.2018 16:43

@everyone теперь код работает лол

Faizal Mohaideen Kadersha 21.11.2018 16:47

@everyone спасибо, что нашли время поправить меня :)

Faizal Mohaideen Kadersha 21.11.2018 16:47
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
13
51
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы можете просто использовать jQuery нанаg> вот так.

$("#btn").on( "click", myFunction);

function myFunction() {
  document.querySelector(".example").style.backgroundColor = "red";
  return 1;
}

Это сработает.

Также я не проверял, является ли это единственной проблемой в вашем примере, но похоже, что у вас есть ошибка в имени функции myfunction => myFunction

x.addEventListener("click", myFunction);

это будет работать, но есть ли способ заставить его работать, определив addeventlistener внутри пользовательской функции? спасибо за то, что вы на него ответили, хотя

Faizal Mohaideen Kadersha 21.11.2018 16:36

@FaizalMohaideenKadersha вам подойдет встроенный обработчик кликов? Что-то вроде <button id = "btn" onclick = "myFunction ()"> Попробуйте </button>

Anastasios Selmani 21.11.2018 16:43

@FaizalMohaideenKadersha вы должны удалить тег jquery, если вы не хотите ответов jquery

Pete 21.11.2018 16:43

Вы можете превратить функцию щелчка в IIFE:

(function click() {
  var x = document.querySelector("#btn");
  x.addEventListener("click", myFunction);
  console.info(x);
})()

function myFunction() {
  document.querySelector(".example").style.backgroundColor = "red";
  return 1;
}
<h2 class = "example">A heading with class = "example"</h2>

<p>Click the button to add a background color to the first element in the document with class = "example".</p>

<button id = "btn">Try it</button>

Также убедитесь, что заглавные буквы совпадают при вызове функций

@dimitry есть ли способ обойти это, не превращая функцию в выражение с немедленным вызовом функции

Faizal Mohaideen Kadersha 21.11.2018 16:35

Другие вопросы по теме