Как передать id в функцию JS?

Есть блок с контентом и кнопка с одинаковыми id

<div id="1">
Какой-то контент
<button id="1" onclick="delDiv(this.id)">Удалить</button>
</div>

Есть функция, которая вызывается по кнопке

function delDiv(id) {    
    document.getElementById(id).style.display = "none";
}

Но функция не работает. Что тут нужно исправить? Только без parentElement


Ответы (1 шт):

Автор решения: Алексей Шиманский

Правильно, что не работает. HTML не валидный. Когда исправите - будет работать


На всякий случай можно переделать под это:

function delDiv(elem) {    
    elem.parentNode.style.display = "none";
}
<div id="div-1">
Какой-то контент
<button id="btn-1" onclick="delDiv(this)">Удалить</button>
</div>


<div id="div-2">
Какой-то контент
<button id="btn-2" onclick="delDiv(this)">Удалить</button>
</div>

т.к. на странице есть одинаковые идентификаторы...что не верно изначально


помимо этого div с id="1" есть другие div с id="1" в другой части кода. Мне нужно, чтобы при нажатии кнопки удалялись все div с id="1"

Элементам общим признаком надо присвоить класс и работать с ним. А кнопкам можно добавить data-атрибуты, для определения общего класса

function delDiv(elem) {    
    let divClass = elem.dataset.info;    
    
    [...document.querySelectorAll(`.${divClass}`)].forEach((elem) => {
       elem.style.display = "none";     
    });        
}
<div class="common-div">
Какой-то контент
<button id="btn-1" data-info="common-div" onclick="delDiv(this)">Удалить1</button>
</div>


<div class="common-div">
Какой-то контент
<button id="btn-2" data-info="common-div" onclick="delDiv(this)">Удалить1</button>
</div>


<div class="common-div2">
Какой-то контент
<button id="btn-1" data-info="common-div2" onclick="delDiv(this)">Удалить2</button>
</div>


<div class="common-div2">
Какой-то контент
<button id="btn-2" data-info="common-div2" onclick="delDiv(this)">Удалить2</button>
</div>

→ Ссылка