По сути, в названии говорится, что это код, который я пробовал, но он не работает:
<div id = "box" onclick = "doSmt(var1, bar2)">
if (condition){
box.removeEventListener("click" , doSmt)}



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Что я прочитал в 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>
не сработает, потому что вы добавили onclick в свой div, это не
addEventListener