@Crushing

Почему не пропадает блок при клике на кнопку?

https://jsfiddle.net/LLb1b53u/3/ - При нажатии на крестик, блок должен пропадать, но этого не происходит, хотелось бы узнать, что я делаю не так.
  • Вопрос задан
  • 194 просмотра
Решения вопроса 1
Deonisius
@Deonisius
Родился в 11110110111 году, 11000 января.
Для начала, найдите отличия:
1. delMessage и dellMessage
2. lenght и length
3. Оператор > и <
Во вторых, переменную i нужно определять и в данном случае с помощью ключевого слова let. После того, как с этим разобрались, выясниться, что у вас все блоки сразу же скроются, т.к. вы вызываете функцию в цикле, а не передаёте её аргументом, как callback-функцию. То есть, необходимо передавать только имя функции - delMessage, а не вызывать её delMessage(). И переходим к последнему пункту - как передать аргументы. Используем метод bind()
На выходе, получаем примерно такой код:
let closeIco = document.getElementsByClassName('clossing');
for (let i = 0; i < closeIco.length; i++) {
    closeIco[i].addEventListener('click', delMessage.bind(this, i));
}

function delMessage(itemNum) {
    messages = document.getElementsByClassName('message');
    messages[itemNum].style.display = 'none';
}
Что касается последнего пункта, то можно сделать просто - вызвать нужную нам функцию внутри callback-функции обработчика события.
closeIco[i].addEventListener('click', () => {
    delMessage(i);
});
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
NeiroNx
@NeiroNx
Программист
там все не так, начиная от лексической ошибке в имени длины массива, заканчивая функцией листенера. Нужно все с нуля переписать.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы