Почему оповещение работает только один раз, когда не работает? - PullRequest
0 голосов
/ 05 мая 2019
document.querySelector('html').onclick = function() {
    alert('Hy');
}

работает каждый раз, когда я нажимаю на веб-страницу, отображающую диалоговое окно.

, но если бы я удалил объявление функции и вместо этого написал

document.querySelector('html').onclick = alert('Hey');

, он работал бы только один раз.

Я не понимаю этого, потому что я прошу javascript оповещать Hey каждый раз, когда я нажимаю на веб-страницу, но он делает то же самое только один раз.Как влияет объявление функции на этот фрагмент кода?

Ответы [ 2 ]

0 голосов
/ 05 мая 2019

Потому что это делает:

document.querySelector("html").onclick = alert("Hey");

Он запускает код alert("Hey"), затем устанавливает onclick элемента в возвращаемое значение из alert("hey").Это будет работать только как правильный обработчик события, если alert("Hey") возвращает функцию.Это не:

console.log(alert("Hey"));

Таким образом, вам необходимо прикрепить функцию или ссылку на функцию следующим образом:

document.body.onclick = () => alert("Hey");
<p>Click Me</p>

Вышеописанное работает и является лишь небольшим дополнением к желаемому синтаксису - для этого мы используем функции стрелок ES6.

0 голосов
/ 05 мая 2019

Вам необходимо различать функцию и результат вызова функции.Во втором случае вы немедленно запускаете функцию alert, а затем устанавливаете для onclick ее результат (который не является функцией и не делает ничего полезного).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...