Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 15.05.2022, 09:48
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Сообщение от firsmember
А если в URL 1 запрос например
?y=2018
Тогда класс активной ссылки добавляется к ссылке
<li><a href="?y=2018&amp;еще всякие запросы">2018</a></li>
и ко всем ссылкам месяцев
возможно вы хотели так ...)))
<!DOCTYPE html>
<html>

<head>
    <title>Untitled</title>
    <meta charset="utf-8">
    <style type="text/css">
        .current-menu-item a{
            color: red;
        }
    </style>
</head>

<body>
    <ul class="news-nav-list">
        <li><a href="?y=2022&amp;еще всякие запросы">2022</a></li>
        <li><a href="?y=2021&amp;еще всякие запросы">2021</a></li>
        <li><a href="?y=2018&amp;еще всякие запросы">2018</a></li>
        и т.д.
    </ul>
    <ul class="news-nav-list">
        <li><a href="?всякие запросы&amp;m=04">Апрель</a></li>
        <li><a href="?всякие запросы&amp;m=09">Сентябрь</a></li>
        и т.д.
    </ul>
    <ul class="news-nav-list">
        <li><a href="?всякие запросы&amp;m=04">Апрель</a></li>
        <li><a href="?всякие запросы&amp;m=09&y=2018">тест</a></li>
        и т.д.
    </ul>

    <script>
        const params = new URLSearchParams("?y=2018"); //const params = new URLSearchParams(location.search);
        document.querySelectorAll(".news-nav-list li").forEach(li => {
            let link = li.querySelector("a");
            let href = link.href;
            let url = new URL(href);
            let search = new URLSearchParams(url.search);
            li.classList.remove("current-menu-item");
            let add;
            if(params.has("y") && params.has("m")) add = ["y","m"].every(key => search.has(key) && params.get(key) == search.get(key));
            else if(params.has("m")) add = !search.has("y") && params.get("m") == search.get("m");
            else if(params.has("y")) add = (!search.has("m") && params.get("y") == search.get("y")) || (search.has("m") && !search.has("y"));
            if(add) li.classList.add("current-menu-item");
        })
    </script>
</body>

</html>
Ответить с цитированием
  #12 (permalink)  
Старый 17.05.2022, 15:33
Кандидат Javascript-наук
Отправить личное сообщение для firsmember Посмотреть профиль Найти все сообщения от firsmember
 
Регистрация: 08.11.2019
Сообщений: 113

Вы наверное меня не правильно поняли...

Если не активна ни одна ссылка то их перечень выглядит так
<ul class="news-nav-list">
Год:
<li><a href="?y=2022&amp;m=05">2022</a></li>
<li><a href="?y=2021&amp;m=05">2021</a></li>
<li><a href="?y=2018&amp;m=05">2018</a></li>
</ul>

и соответственно
<ul class="news-nav-list">
Месяц:	
<li><a href="?y=2022&amp;m=04">Апрель</a></li>
<li><a href="?y=2022&amp;m=09">Сентябрь</a></li>
</ul>

т.е. в параметры добавляется текущий год и месяц соответственно: Чтобы выбрав только год, можно было посмотреть статьи за текущий месяц нужного года, а если не выбирая год нажать на месяц то будут показаны статьи за текущий год выбранного месяца.

НО...

Если мы выбрали например 2018 год, то список ссылок уже на обновленной странице, будет выглядеть подругому - Вот так:

<ul class="news-nav-list">
Год:
<li><a href="?y=2022&amp;m=05">2022</a></li>
<li><a href="?y=2021&amp;m=05">2021</a></li>
<li><a href="?y=2018&amp;m=05">2018</a></li>
</ul>

и соответственно
<ul class="news-nav-list">
Месяц:	
<li class="current-menu-item"><a href="?y=2018&amp;m=04">Апрель</a></li>
<li class="current-menu-item"><a href="?y=2018&amp;m=09">Сентябрь</a></li>			  				
</ul>


А если мы выбрали еще и месяц - например Сентябрь - то список ссылок уже будет таким:

<ul class="news-nav-list">
Год:
<li class="current-menu-item"><a href="?y=2022&amp;m=09">2022</a></li>
<li class="current-menu-item"><a href="?y=2021&amp;m=09">2021</a></li>
<li class="current-menu-item"><a href="?y=2018&amp;m=09">2018</a></li>
</ul>


и соответственно

<ul class="news-nav-list">
Месяц:	
<li class="current-menu-item"><a href="?y=2018&amp;m=04">Апрель</a></li>
<li class="current-menu-item"><a href="?y=2018&amp;m=09">Сентябрь</a></li>				  						  				
</ul>


т.е. у меня в ссылке - в строке браузера - всегда есть параметр года и параметр месяца (если нажата хоть одна из них) - и всегда в порядке - ?y=ГОД&amp;m=МЕСЯЦ

Последний раз редактировалось firsmember, 17.05.2022 в 15:36.
Ответить с цитированием
  #13 (permalink)  
Старый 17.05.2022, 15:47
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

firsmember,
я пас))) вам виднее ваши ссылки и что вы хотите выделить, я могу только гадать.
Ответить с цитированием
  #14 (permalink)  
Старый 17.05.2022, 16:06
Кандидат Javascript-наук
Отправить личное сообщение для firsmember Посмотреть профиль Найти все сообщения от firsmember
 
Регистрация: 08.11.2019
Сообщений: 113

ВОТ БЛИН! ЭТО Я ЗАТУПОК! Я НЕ Убрал, предыдущий скрипт!!!!
Рони - Вы Гений - не первый раз меня выручаете! Большое вам спасибо!
Счастья вам и вашим близким!

Последний раз редактировалось firsmember, 17.05.2022 в 16:11.
Ответить с цитированием
  #15 (permalink)  
Старый 17.05.2022, 16:15
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Сообщение от firsmember
т.е. у меня в ссылке - в строке браузера - всегда есть параметр года и параметр месяца
это самый первый вариант #7, который вам был предложен, но он вас не устроил.
видимо вы не смогли лаконично объяснить задачу, если из предложенных вариантов, вам ничего не подходит.
Ответить с цитированием
  #16 (permalink)  
Старый 17.05.2022, 16:19
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

firsmember,
ура!!!
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавить класс при скролле Quark_ Javascript под браузер 1 16.02.2016 13:42
Как добавить и удалить класс при нажатии на div? Jeick9 Events/DOM/Window 23 10.03.2015 16:05
Добавить / удалить класс кликом fabrique Общие вопросы Javascript 4 03.09.2014 04:43
Как при появление класса в блоке1, добавить класс в блок2? raindew jQuery 3 11.10.2013 21:05
Как добавить класс к нужному элементу при наведении на определеные ссылки? crazygangster77 Events/DOM/Window 3 05.06.2013 02:19