Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Подскажите как убрать класс. (https://javascript.ru/forum/misc/78181-podskazhite-kak-ubrat-klass.html)

Artur_Hopf 06.08.2019 14:11

Подскажите как убрать класс.
 
Добрый день. Подскажите как убрать класс "active" со всех кнопок кроме нажатой? :-?
Код сейчас такой:
let button = document.querySelectorAll('div.modal-body div.list-group button');

[].forEach.call( button, function( item ) 
{
    item.addEventListener( 'click', function()
    {
         this.classList.add("active");
     });
});

рони 06.08.2019 14:36

Artur_Hopf,
let button = document.querySelectorAll('div.modal-body div.list-group button');
let activeItem = button[0];
[].forEach.call( button, function( item )
{
    item.addEventListener( 'click', function()
    {
        activeItem.classList.remove('active');
        activeItem = item;
        activeItem.classList.add('active');
     });
});

Artur_Hopf 06.08.2019 14:52

рони,
спасибо большое :thanks: , но можно пояснить как это работает.
let button = document.querySelectorAll('div.modal-body div.list-group button');
let activeItem = button[0]; // первая кнопка из списка будет activeItem 
[].forEach.call( button, function( item )
{
    item.addEventListener( 'click', function()
    {
        activeItem.classList.remove('active');  //у первой кнопки из списка убираем класс 'active'
        activeItem = item;  // вот тут вопрос, вроде как присваиваем activeItem нажатую только что кнопку
        activeItem.classList.add('active');  // добавляем нажатой только что кнопке класс 'active'
     });
});


но работает как надо. Помогите восполнить пробел в знаниях. Как передается удаление класса 'active' всем кнопкам?

рони 06.08.2019 14:55

Цитата:

Сообщение от Artur_Hopf
//у первой кнопки из списка убираем класс 'active'


у кнопки нажатой в предыдущий раз

Artur_Hopf 06.08.2019 15:00

рони,
дошло, спасибо большое :yes:

j0hnik 06.08.2019 18:13

рони,
где же проверка if(activeItem == item) return?

рони 06.08.2019 18:45

Цитата:

Сообщение от j0hnik
где же проверка

излишне, но можно добавить в строку 6.

Malleys 07.08.2019 02:33

Artur_Hopf, рони, а зачем в коде пустой массив? Разве такую обработку нельзя сделать более эффективной? Вместо цикла воспользоваться делегированием?

рони 07.08.2019 14:40

Malleys,
чем делегирование эффективней в данном случае? чем плох пустой массив?

Malleys 07.08.2019 19:50

рони, делегирование позволяет не перечислять элементы и вы можете использовать только одну функцию. Новые элементы добавленные позже будут тоже работать.

Цитата:

Сообщение от рони
чем плох пустой массив?

Вы написали 26 415 сообщении и не знаете этого... Пустой массив ничем не плох. Я интересовался причиной, а не тем, что пустой массив может быть хорош или плох! Вы создали массив, но вы не используете его чтобы хранить в нём данные! Соответственно и возникает вопрос о том, а зачем в коде пустой массив?


Часовой пояс GMT +3, время: 11:17.