Я пытаюсь захватить событие 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>myfunction не равно myFunction - измените это, и он должен работать. Также вы никогда не вызываете функцию щелчка, чтобы привязать событие
Во-первых, вы никогда не вызываете свою функцию click. Во-вторых, JS чувствителен к регистру, поэтому myfunction и myFunction не совпадают.
@ Smollet777 Я отредактировал свою проверку вопроса даже после изменения имени и вызова функции с использованием window.location, она не запускается
@pete я отредактировал свою проверку вопроса даже после изменения имени и вызова функции с использованием window.location, она не запускается
вы по-прежнему не вызываете функцию щелчка - вы просто обернули ее и вызвали внешнюю функцию - ничто не вызывает функцию щелчка, которая ее связывает
Это должно быть window.onload = click. Если вы не добавите click () в конец функции xyz, но это совершенно бесполезно.
@shilly я определил это так, как вы объяснили, но все еще не работает
Просто удалите функцию оболочки щелчка и ваш код работает. «Значение» по-прежнему является проблемой, что означает значение «в»? Если это 1 в фактическом прослушивателе событий, он не будет работать. Функции прослушивателя событий вызываются очередью событий браузера, и они возвращаются в битовое пространство. Вы не можете получить возвращаемое значение из такого обратного вызова.
@pete, я думаю, вы правы, вот что я хотел узнать из этого поста
@Teemu вот что я хотел знать, сработает ли событие щелчка, если оно заключено в функцию, остальная часть кода, который я только что написал, не имеет смысла
@everyone теперь код работает лол
@everyone спасибо, что нашли время поправить меня :)



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете просто использовать jQuery
$("#btn").on( "click", myFunction);
function myFunction() {
document.querySelector(".example").style.backgroundColor = "red";
return 1;
}
Это сработает.
Также я не проверял, является ли это единственной проблемой в вашем примере, но похоже, что у вас есть ошибка в имени функции myfunction => myFunction
x.addEventListener("click", myFunction);
это будет работать, но есть ли способ заставить его работать, определив addeventlistener внутри пользовательской функции? спасибо за то, что вы на него ответили, хотя
@FaizalMohaideenKadersha вам подойдет встроенный обработчик кликов? Что-то вроде <button id = "btn" onclick = "myFunction ()"> Попробуйте </button>
@FaizalMohaideenKadersha вы должны удалить тег jquery, если вы не хотите ответов jquery
Вы можете превратить функцию щелчка в 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 есть ли способ обойти это, не превращая функцию в выражение с немедленным вызовом функции
Похоже, ваш код будет работать, просто вызовите click после того, как элементы будут созданы. Хотя я не уверен, что именно такое "Значение", в которое вы хотите войти.