Почему обработчик onclick срабатывает при загрузке страницы?

Здравствуйте, есть код:
var someBtn = document.getElementById('all');

someBtn.onclick = myFunction(5);

function myFunction (a){
  alert(a);
}


Проблема в том, что функция вызывается при загрузке страницы, а не при клике. В чем тут дело? Заранее спасибо за ответ.
  • Вопрос задан
  • 3449 просмотров
Решения вопроса 1
rockon404
@rockon404
Frontend Developer
Потому что вы вызываете функцию myFunction с аргументом 5 и присваиваете someBtn.onclick результат ее выполнения, а не саму функцию.

Исправьте так:
var someBtn = document.getElementById('all');

someBtn.onclick = function() {
  myFunction(5);
}

function myFunction(a){
  alert(a);
}


или так:
var someBtn = document.getElementById('all');

someBtn.onclick = function() {
  alert(5);
}


а по-хорошему так:
var someBtn = document.getElementById('all');

someBtn.addEventListener('click', function() {
  myFunction(5);
});

function myFunction(a){
  alert(a);
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
rework
@rework
Помог ответ? В благодарность отметь его решением
Нужно события навешивать через addEventListener

var someBtn = document.getElementById('all');

someBtn.addEventListener('click', funtion(){ myFunction(5); });

function myFunction (a){
  alert(a);
}
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы