\n```\n\nНедостатки: смешивание HTML и JavaScript, сложнее отладка, проблемы с очисткой памяти.\n\n## 2. addEventListener (современный способ)\n\nЭто рекомендуемый способ в современном JavaScript. Он позволяет добавлять обработчики событий без смешивания с HTML.\n\n```javascript\n// Получаем ссылку на кнопку\nconst button = document.querySelector(button);\n\n// Добавляем обработчик события\nbutton.addEventListener(click, function() {\n console.log(Кнопка нажата!);\n alert(Hello!);\n});\n\n// Или с стрелочной функцией (более современный синтаксис)\nbutton.addEventListener(click, () => {\n console.log(Кнопка нажата!);\n document.body.style.backgroundColor = lightblue;\n});\n```\n\n## 3. Именованная функция с addEventListener\n\nЕсли нужно позже удалить обработчик, лучше использовать именованную функцию.\n\n```javascript\nconst button = document.querySelector(button);\n\nfunction handleClick() {\n console.log(Кнопка нажата!);\n}\n\n// Добавляем обработчик\nbutton.addEventListener(click, handleClick);\n\n// Позже можно удалить обработчик\nbutton.removeEventListener(click, handleClick);\n```\n\n## 4. Использование .onclick свойства (не рекомендуется)\n\nЭто способ может привести к перезаписи обработчиков.\n\n```javascript\nconst button = document.querySelector(button);\n\nbutton.onclick = function() {\n console.log(Кнопка нажата!);\n};\n```\n\nПроблема: если добавить еще один обработчик, первый перезапишется.\n\n## 5. В React (функциональном компоненте)\n\nЭто наиболее популярный способ в современной разработке.\n\n```javascript\nimport React from react;\n\nfunction MyButton() {\n const handleClick = () => {\n console.log(Кнопка нажата!);\n alert(Hello!);\n };\n\n return (\n \n );\n}\n\nexport default MyButton;\n```\n\nИли прямо в JSX:\n\n```javascript\n\n```\n\n## 6. Обработка события с параметрами\n\nЧасто нужно передать данные в функцию при клике.\n\n```javascript\nconst button = document.querySelector(button);\nconst userId = 123;\n\nbutton.addEventListener(click, () => {\n deleteUser(userId); // Передаем параметр\n});\n\nfunction deleteUser(id) {\n console.log(`Удаляем пользователя с ID: ${id}`);\n fetch(`/api/users/${id}`, { method: DELETE });\n}\n```\n\nВ React это проще:\n\n```javascript\nfunction UsersList({ users }) {\n const handleDelete = (userId) => {\n fetch(`/api/users/${userId}`, { method: DELETE });\n };\n\n return (\n
\n {users.map(user => (\n \n ))}\n
\n );\n}\n```\n\n## 7. Обработка события с объектом события (event)\n\nОбработчик события получает объект события с информацией о событии.\n\n```javascript\nconst button = document.querySelector(button);\n\nbutton.addEventListener(click, (event) => {\n console.log(Объект события:, event);\n console.log(Элемент, на котором произошло событие:, event.target);\n console.log(Тип события:, event.type);\n \n // Отмена действия по умолчанию (если это form submit)\n event.preventDefault();\n});\n```\n\n## 8. Делегирование событий\n\nИнтересный паттерн, когда обработчик добавляется на родительский элемент.\n\n```javascript\nconst container = document.querySelector(.button-container);\n\ncontainer.addEventListener(click, (event) => {\n if (event.target.tagName === BUTTON) {\n console.log(Нажата кнопка:, event.target.textContent);\n }\n});\n```\n\nЭто полезно, когда кнопок много или они динамически добавляются.\n\n## Лучшие практики\n\n1. **Используй addEventListener** — это современный стандарт\n2. **Избегай onclick в HTML** — разделяй разметку и логику\n3. **В React используй onClick prop** — это идиоматичный способ\n4. **Удаляй обработчики, если они больше не нужны** — это предотвращает утечки памяти\n5. **Используй стрелочные функции** — они проще и понятнее\n6. **Обращайся с event объектом** — он содержит полезную информацию\n\nВ современной разработке (React, Vue, Angular) обработка клика обычно встроена в компонент, поэтому ручная работа с DOM почти не нужна. Но понимание базовых механизмов события очень важно для собеседования и отладки проблем.","dateCreated":"2026-04-03T11:40:55.596009","upvoteCount":0,"author":{"@type":"Person","name":"claude-haiku-4.5"}}}}
← Назад к вопросам

Как сделать выполнение кода по нажатию на кнопку на JS?

1.2 Junior🔥 61 комментариев
#JavaScript Core

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI3 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Как выполнить код по нажатию на кнопку

Это базовое умение в JavaScript. Существует несколько способов обработки клика на кнопку, от простых до сложных. Рассмотрим их все.

1. onclick атрибут в HTML (не рекомендуется)

Самый простой способ, но считается плохой практикой в современной разработке.

// HTML
<button onclick="alert(Привет!)">
  Нажми меня
</button>

// Или передача функции
<button onclick="myFunction()">
  Нажми меня
</button>

<script>
  function myFunction() {
    console.log(Кнопка нажата!);
  }
</script>

Недостатки: смешивание HTML и JavaScript, сложнее отладка, проблемы с очисткой памяти.

2. addEventListener (современный способ)

Это рекомендуемый способ в современном JavaScript. Он позволяет добавлять обработчики событий без смешивания с HTML.

// Получаем ссылку на кнопку
const button = document.querySelector(button);

// Добавляем обработчик события
button.addEventListener(click, function() {
  console.log(Кнопка нажата!);
  alert(Hello!);
});

// Или с стрелочной функцией (более современный синтаксис)
button.addEventListener(click, () => {
  console.log(Кнопка нажата!);
  document.body.style.backgroundColor = lightblue;
});

3. Именованная функция с addEventListener

Если нужно позже удалить обработчик, лучше использовать именованную функцию.

const button = document.querySelector(button);

function handleClick() {
  console.log(Кнопка нажата!);
}

// Добавляем обработчик
button.addEventListener(click, handleClick);

// Позже можно удалить обработчик
button.removeEventListener(click, handleClick);

4. Использование .onclick свойства (не рекомендуется)

Это способ может привести к перезаписи обработчиков.

const button = document.querySelector(button);

button.onclick = function() {
  console.log(Кнопка нажата!);
};

Проблема: если добавить еще один обработчик, первый перезапишется.

5. В React (функциональном компоненте)

Это наиболее популярный способ в современной разработке.

import React from react;

function MyButton() {
  const handleClick = () => {
    console.log(Кнопка нажата!);
    alert(Hello!);
  };

  return (
    <button onClick={handleClick}>
      Нажми меня
    </button>
  );
}

export default MyButton;

Или прямо в JSX:

<button onClick={() => console.log(Нажата!)}>
  Нажми меня
</button>

6. Обработка события с параметрами

Часто нужно передать данные в функцию при клике.

const button = document.querySelector(button);
const userId = 123;

button.addEventListener(click, () => {
  deleteUser(userId);  // Передаем параметр
});

function deleteUser(id) {
  console.log(`Удаляем пользователя с ID: ${id}`);
  fetch(`/api/users/${id}`, { method: DELETE });
}

В React это проще:

function UsersList({ users }) {
  const handleDelete = (userId) => {
    fetch(`/api/users/${userId}`, { method: DELETE });
  };

  return (
    <div>
      {users.map(user => (
        <button key={user.id} onClick={() => handleDelete(user.id)}>
          Удалить {user.name}
        </button>
      ))}
    </div>
  );
}

7. Обработка события с объектом события (event)

Обработчик события получает объект события с информацией о событии.

const button = document.querySelector(button);

button.addEventListener(click, (event) => {
  console.log(Объект события:, event);
  console.log(Элемент, на котором произошло событие:, event.target);
  console.log(Тип события:, event.type);
  
  // Отмена действия по умолчанию (если это form submit)
  event.preventDefault();
});

8. Делегирование событий

Интересный паттерн, когда обработчик добавляется на родительский элемент.

const container = document.querySelector(.button-container);

container.addEventListener(click, (event) => {
  if (event.target.tagName === BUTTON) {
    console.log(Нажата кнопка:, event.target.textContent);
  }
});

Это полезно, когда кнопок много или они динамически добавляются.

Лучшие практики

  1. Используй addEventListener — это современный стандарт
  2. Избегай onclick в HTML — разделяй разметку и логику
  3. В React используй onClick prop — это идиоматичный способ
  4. Удаляй обработчики, если они больше не нужны — это предотвращает утечки памяти
  5. Используй стрелочные функции — они проще и понятнее
  6. Обращайся с event объектом — он содержит полезную информацию

В современной разработке (React, Vue, Angular) обработка клика обычно встроена в компонент, поэтому ручная работа с DOM почти не нужна. Но понимание базовых механизмов события очень важно для собеседования и отладки проблем.