Удаление события onclick из div с помощью javascript

По сути, в названии говорится, что это код, который я пробовал, но он не работает:

<div id = "box" onclick = "doSmt(var1, bar2)">
if (condition){
box.removeEventListener("click" , doSmt)}

не сработает, потому что вы добавили onclick в свой div, это не addEventListener

Chris G 06.02.2023 19:33
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
1
61
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Что я прочитал в MDN для removeEventListener вы не можете удалить прослушиватель событий, который является частью атрибута HTML. Итак, есть два варианта:

Добавьте прослушиватель событий при загрузке страницы

onClickHandler = () => doSmt(var1, var2);
document.addEventListener('DOMContentLoaded', () => {
  document.getElementById('box').addEventListener('click', onClickHandler);
});

// and later
if (condition) {
document.getElementById('box').removeEventListener('click', onClickHandler)

Или, если вы не можете изменить HTML, вы можете изменить doSMT, чтобы отслеживать отключенный бит.

let disableBox = false;

function doSmt() {
  if (disableBox) return;
  // ...
}

if (condition) {
  disableBox = true;
}

Или

его можно удалить, сначала обратившись к элементу, а затем установив для атрибута значение null

<div id = "myDiv" onclick = "handleClick()">Click me</div>

<script>
  function handleClick() {
    alert("Div was clicked!");
  }

  // Remove the onclick event from the div
  const div = document.getElementById("myDiv");
  div.onclick = null;
</script>
Ответ принят как подходящий

Я думаю, будет лучше, если вы удалите событие onclick вместо этой попытки

//onclick function
function doSmt(){
   console.info("something");
}

//remove onclick event, this will be inside your if condition
document.getElementById('box').removeAttribute("onclick");
<div id = "box" onclick = "doSmt()"> div</div>

Другие вопросы по теме