Выход из цикла for после того, как он был выполнен один раз

цикл за в следующем коде завершается после удаления одного класса и не удаляет другой, пока я снова не нажму кнопку

Я хочу удалить класс скрытый из двух разделов, но не хочу использовать querySelectorAll.

есть ли способ сделать это, используя цикл getElementsByClassName и за, без JQuery Просто JavaScript

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


var items = document.getElementsByClassName('hidden');

let show = document.querySelector('.show-modal');

show.addEventListener('click', function(){
    for (let i = 0; i < items.length; i++){
        items.item(i).classList.remove('hidden');  
    }
}); 

Почему вы не можете использовать getElementsByClassName и для show-modal?

Tushar Shahi 13.05.2022 14:46
getElementsByClassName возвращает HTMLCollection жить, что означает, что все изменения в DOM будут немедленно отражены в items. Когда вы удаляете класс из элемента, он немедленно исчезает из этой коллекции, а также изменяется длина коллекции. Это можно просто обойти, если вы перебираете коллекцию назад, а не вперед. Или используйте querySelectorAll вместо этого для начала - он возвращает статический NodeList.
CBroe 13.05.2022 14:47

@TusharShahi, я могу использовать его, но это только один элемент, и я просто использую запрос, чтобы продемонстрировать

Ali Ab 13.05.2022 14:50

@CBroe, как выполнить итерацию назад, я не понял?

Ali Ab 13.05.2022 14:56
for (let i = items.length-1; i >= 0 ; i--)
CBroe 13.05.2022 15:03

@CBroe, но я не понял, почему он работает назад, а не вперед? Если у вас есть время, не могли бы вы объяснить это?

Ali Ab 13.05.2022 15:22

Я уже объяснял это своим первым комментарием.

CBroe 13.05.2022 15:25
Поведение ключевого слова "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) для оценки ваших знаний,...
1
7
39
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Использование forEach поможет -

show.addEventListener('click', () => {
    items.forEach((element) => {
        element.classList.remove('hidden');  
    })
}); 

поблагодарю вас за помощь, но я хочу использовать цикл for, чтобы доказать свою точку зрения ?

Ali Ab 13.05.2022 15:00

Затем @AliAb используйте querySelectorAll вместо getElementsByClassName, так как последний возвращает живой список

TorNato 13.05.2022 15:01

Значит, нет способа использовать getElementsByClassName с циклом for для этого?

Ali Ab 13.05.2022 15:05

@AliAB, если вы выполните итерацию в обратном направлении, это сработает, но почему вы зациклены на его использовании?

TorNato 13.05.2022 15:08

это работало в обратном направлении, это был вызов между мной и моим учителем, потому что я новичок в javascript

Ali Ab 13.05.2022 15:20

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