Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.07.2021, 14:11
Интересующийся
Отправить личное сообщение для Tempest Посмотреть профиль Найти все сообщения от Tempest
 
Регистрация: 21.05.2018
Сообщений: 25

Как сделать так, чтобы при нажатии на один из элементов меню, у другого менялся цвет?
Как сделать, чтобы при клике на один из li в .sidebar-menu один из кружков-элементов li в .sidebar-nav менял цвет фона на белый, путем добавления к нему класса .actived? Причем, когда происходит нажатие на один из li в .sidebar-menu, кружок из .sidebar-nav должен менять цвет в соответствии с тем элементом, на который было совершено нажатие. Например, нажали на "Сайт-визитка" и загорается первый кружок, нажали на "Интернет-магазин" и загорается третий кружок.

Сам сайт ct03638.tmweb.ru
Весь код https://jsfiddle.net/pjzs9uxw/


<section class="services" id="services">
            <div class="wrapper">
                <div class="content">
                    <div class="sidebar">
                        <h3>Наши услуги</h3>
                        <ul class="sidebar-menu">
                            <li id="business-card"><a href="#">Сайт-визитка</a></li>
                            <li id="landing"><a href="#">Landing page</a></li>
                            <li id="market"><a href="#">Интернет-магазин</a></li>
                            <li id="corp"><a href="#">Корпоративный сайт</a></li>
                            <li id="bitrix"><a href="#">1C Битрикс</a></li>
                            <li id="advertising"><a href="#">Контекстная реклама</a></li>
                            <li id="seo"><a href="#">SEO оптимизация</a></li>
                            <li id="promotion"><a href="#">Продвижение в соц. сетях</a></li>
                            <li id="marketing"><a href="#">Контент-маркетинг</a></li>
                        </ul>
                        <ul class="sidebar-nav">
                            <li class="business-card"></li>
                            <li class="landing"></li>
                            <li class="market"></li>
                            <li class="corp"></li>
                            <li class="bitrix"></li>
                            <li class="advertising"></li>
                            <li class="seo"></li>
                            <li class="promotion"></li>
                            <li class="marketing"></li>
                        </ul>
                    </div>
                </div>
            </div>
        </section>
Изображения:
Тип файла: jpg Screenshot_2.jpg (33.3 Кб, 2 просмотров)
Ответить с цитированием
  #2 (permalink)  
Старый 04.07.2021, 15:23
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

установка класса по индексу клика
Tempest,

<!DOCTYPE html>
<html>

<head>
    <title>Untitled</title>
    <meta charset="utf-8">
    <style type="text/css">
        .actived {
            background-color: rgba(255, 0, 0, 1);
        }
    </style>
    <script>
        document.addEventListener("DOMContentLoaded", function() {
            const menu = document.querySelector(".sidebar-menu");
            const menuLi = [...menu.querySelectorAll("li")];
            const nav = document.querySelector(".sidebar-nav");
            const navLi = [...nav.querySelectorAll("li")];
            let index = 0;
            const setActive = i => {
                menuLi[index].classList.remove("actived");
                navLi[index].classList.remove("actived");
                index = i;
                menuLi[index].classList.add("actived");
                navLi[index].classList.add("actived");
            }
            menu.addEventListener("click", function(event) {
                event.preventDefault();
                let target = event.target;
                if (target = target.closest("li")) {
                    let i = menuLi.indexOf(target);
                    setActive(i);
                }
            });
            nav.addEventListener("click", function(event) {
                event.preventDefault();
                let target = event.target;
                if (target = target.closest("li")) {
                    let i = navLi.indexOf(target);
                    setActive(i);
                }
            });
        });
    </script>
</head>

<body>
    <section class="services" id="services">
        <div class="wrapper">
            <div class="content">
                <div class="sidebar">
                    <h3>Наши услуги</h3>
                    <ul class="sidebar-menu">
                        <li id="business-card"><a href="#">Сайт-визитка</a></li>
                        <li id="landing"><a href="#">Landing page</a></li>
                        <li id="market"><a href="#">Интернет-магазин</a></li>
                        <li id="corp"><a href="#">Корпоративный сайт</a></li>
                        <li id="bitrix"><a href="#">1C Битрикс</a></li>
                        <li id="advertising"><a href="#">Контекстная реклама</a></li>
                        <li id="seo"><a href="#">SEO оптимизация</a></li>
                        <li id="promotion"><a href="#">Продвижение в соц. сетях</a></li>
                        <li id="marketing"><a href="#">Контент-маркетинг</a></li>
                    </ul>
                    <ul class="sidebar-nav">
                        <li class="business-card"></li>
                        <li class="landing"></li>
                        <li class="market"></li>
                        <li class="corp"></li>
                        <li class="bitrix"></li>
                        <li class="advertising"></li>
                        <li class="seo"></li>
                        <li class="promotion"></li>
                        <li class="marketing"></li>
                    </ul>
                </div>
            </div>
        </div>
    </section>
</body>

</html>
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как написать скрипт, чтобы при нажатии на кнопку он скроллил на следующую или предыду Tempest Элементы интерфейса 4 04.07.2021 20:46
Как сделать, чтобы прогресс бар отработал не один раз, а несколько? Lefseq Общие вопросы Javascript 3 29.02.2020 13:14
Как сделать так, чтобы при сабмите формы напечатанный текст не исчезал? Athlet Общие вопросы Javascript 1 18.07.2010 02:44
Как сделать так, чтобы JS при нажатии на кнопку не выполняла запрос со страницы. JSProgrammer Элементы интерфейса 3 18.05.2010 20:18
Как сделать, чтобы 2 ссылки отображались как hover при наведении мышкой на любую? Ava Элементы интерфейса 5 19.05.2009 23:24