Функция JS для скрытия постов в блоге

Я создал блог-сайт с 3 основными категориями: инвестиции, деньги и выход на пенсию. Я добавил элемент класса, соответствующий каждой категории темы. Я пытаюсь создать функции JS, которые при нажатии скрывают две другие категории (я делаю это, чтобы не иметь домашнюю страницу для каждой категории). Вот одна из функций, позволяющая отобразить категорию «Пенсия», скрывая категории «Инвестиции» и «Деньги»:

    function showRetirement() {
        var abc = document.getElementsByClassName("Investing, Money");
        for (var abc2 = 0; abc2 < abc.length; abc2++) {
        abc[abc2].style.display = "none";
            }
        }

Излишне говорить, что это не работает. Скобки говорят, что функция «определена, но никогда не используется». Также говорится, что var abc «документ не определен».

Это моя ссылка на функцию:

<div class = "nav-link" onclick = "showRetirement()">Retirement</div>

Спасибо!!!

Поведение ключевого слова "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) для оценки ваших знаний,...
0
0
35
2

Ответы 2

Добро пожаловать в SO Dan.

getElementsByClassName не позволяет получать данные по нескольким именам классов за один вызов. Вместо этого будет проще использовать метод document.querySelectorAll(), который позволяет использовать селекторы запросов для выбора элементов со страницы. Селектор запроса для выбора всех элементов с классом Investing ИЛИ Money будет выглядеть так: .Investing, .Money

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

Еще одно замечание: переменную i принято использовать в циклах for, другим программистам будет легче понять, для чего используется эта переменная.

Пример решения с использованием querySelectorAll

function showRetirement() {
    var elements = document.querySelectorAll(".Investing, .Money");
    for (var i = 0; i < elements.length; i++) {
        elements[i].style.display = "none";
    }
}

Также, наверное, стоит показать здесь элементы с классом Retirement, после того как мы скроем остальные:

function showRetirement() {
    var elementsToHide = document.querySelectorAll(".Investing, .Money");
    for (var i = 0; i < elementsToHide.length; i++) {
        elementsToHide[i].style.display = "none";
    }

    var elementsToShow = document.querySelectorAll(".Retirement");
    for (var i = 0; i < elementsToShow.length; i++) {
        elementsToShow[i].style.display = "block";
    }
}
function showRetirement(){
 var ar_el;
 ar_el = document.getElementsByClassName("Investing");
 for (var i = 0; i < ar_el.length; i++)
  ar_el[i].style.display = "none";

 ar_el = document.getElementsByClassName("Money");
 for (var i = 0; i < ar_el.length; i++)
  ar_el[i].style.display = "none";

 ar_el = document.getElementsByClassName("Retirement");
 for (var i = 0; i < ar_el.length; i++)
  ar_el[i].style.display = "block";

}

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