/
Вопросы и ответы
/
JavaScript
/

Как сделать вызов функции при нажатии кнопки через javascript?

Как сделать вызов функции при нажатии кнопки через javascript?

4 года назад

Andrey Moshkov

Ответы

2

Чтобы сделать вызов функции при нажатии на кнопку, сначала в html документе создаём кнопку. Например, так:

1
<button id="myButton">Press me!</button>

Теперь переходим в подключенный к html документу javascript файл.

  • Объявляем функцию, которую хотим вызывать при нажатии на кнопку:
1
2
3
const callback = () => {
  alert("Hello, World!");
};
  • Получаем кнопку:
1
const button = document.querySelector('#myButton');
  • С помощью метода addEventListener() добавляем кнопке обработчик событий. Первым аргументом передаем событие в виде строки, в нашем случае это будет клик по кнопке, вторым аргументом передаем функцию, которая вызывается при наступлении события:
1
button.addEventListener('click', callback);

Теперь при нажатии кнопки увидим всплывающее окно с надписью Hello, World!.

4 года назад

Кирилл Маркеев

0

Рн о от ролллтирроллло

3 года назад

Василий Слепцов

0

Функцию при нажатии на кнопку вызывают через обработчик события click:

1
2
3
4
5
6
7
8
9
10
<button id="saveButton" type="button">Сохранить</button>

<script>
  function save() {
    console.log('Сохранено');
  }

  const button = document.getElementById('saveButton');
  button.addEventListener('click', save);
</script>

Передавайте функцию без скобок: addEventListener('click', save). Со скобками save() функция выполнится сразу при загрузке страницы, а в обработчик попадёт её результат.

С аргументами

1
2
3
button.addEventListener('click', () => {
  save('черновик');
});

Атрибут onclick

1
<button onclick="save()">Сохранить</button>

Работает, но смешивает HTML и JavaScript. Через onclick можно повесить только один обработчик, а addEventListener позволяет несколько.

Ошибка Cannot read properties of null (reading 'addEventListener')

Скрипт выполнился до того, как кнопка появилась на странице. Решения:

  • подключите скрипт перед </body>;
  • или добавьте defer: <script src="app.js" defer></script>.

Кнопка в форме перезагружает страницу

<button> внутри <form> по умолчанию отправляет форму. Укажите type="button" или отмените отправку:

1
2
3
4
form.addEventListener('submit', (event) => {
  event.preventDefault();
  save();
});

Несколько кнопок

1
2
3
4
5
document.querySelectorAll('.like').forEach((btn) => {
  btn.addEventListener('click', () => {
    btn.classList.toggle('active');
  });
});

Если кнопки добавляются на страницу позже, повесьте один обработчик на родителя и проверяйте event.target.closest('.like').

В React

1
<button onClick={save}>Сохранить</button>

События и работу с DOM разбирают в бесплатном курсе «Основы JavaScript».

19 дней назад

Никита Вихров

+7 800 100 22 47

бесплатно по РФ

+7 495 085 21 62

бесплатно по Москве

108813 г. Москва, вн.тер.г. поселение Московский,
г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3
ОГРН 1217300010476
ИНН 7325174845