Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Сделать меню активным для определнных ссылок (https://javascript.ru/forum/dom-window/45615-sdelat-menyu-aktivnym-dlya-opredelnnykh-ssylok.html)

belka_bk 08.03.2014 09:24

Сделать меню активным для определнных ссылок
 
Всем привет, я не когда не встречалась с js и мне очень сложно разобраться одной, читала многие темы на форуме но 1в1 как у меня вопроса я не нашла, были похожие но там другой код, а так как я 0 в js, я даже переделать не смогла =(
Описание того что я хочу сделать:

Url Браузера: site.ru/index.php?id=linkd

<!-- sidebar -->
            <div class="span2 magic-menu-sidebar">
                <div class="hidden-phone hidden-tablet">
                    <h3>My title</h3>
                    <ul>
                        <li><a href="index.php?id=linka">Link A</a></li>
                        <li><a href="index.php?id=linkb">Link B</a></li>
                        <li><a href="index.php?id=linkc">Link C</a></li>
                        <li><a class="current" href="index.php?id=linkd">Link D</a></li>
                    </ul>
                </div>
            </div>
<!-- /sidebar -->


Как сделать именно через js, чтобы когда я была на странице
site.ru/index.php?id=linkx
а так же
site.ru/index.php?id=linkz
site.ru/index.php?id=linky
site.ru/index.php?id=linko
site.ru/index.php?id=linkp
site.ru/index.php?id=linkm
(только вот эти ссылки linkx,linkz,linky,linko,linkp,linkm ссылки не будут меняться динамически всегда будут с такими именами)
чтобы в меню Link D оставался "current"
<li><a class="current" href="index.php?id=linkd">Link D</a></li>

потому что если я ухожу с link D меню перестает быть "current".
<li><a href="index.php?id=linkd">Link D</a></li>

добавлять свои ссылки я не хочу в меню нужно чтобы их не было в меню но когда я на тех адресах сайта чтобы меню link D было current =)

Помогите пожалуйста

Zuenf 08.03.2014 10:02

Вот так попробуй:
<!-- sidebar -->
            <div class="span2 magic-menu-sidebar">
                <div class="hidden-phone hidden-tablet">
                    <h3>My title</h3>
                    <ul>
                        <li><a href="index.php?id=linka">Link A</a></li>
                        <li><a href="index.php?id=linkb">Link B</a></li>
                        <li><a href="index.php?id=linkc">Link C</a></li>
                        <li><a class="current" href="index.php?id=linkd">Link D</a></li>
                    </ul>
                </div>
            </div>
<!-- /sidebar -->
<script>
if(location.search.match(/id=link[xzyopm]/)){
var linkd = document.querySelector('.magic-menu-sidebar a[href*=linkd]');
linkd.className = linkd.className + ' current';
}
</script>

Я думаю на сервере это логичней делать.

рони 08.03.2014 10:44

Zuenf,
код должен срабатывать для всех ссылок а не только для одной
Возможно ли такое на javascript тут сборник на эту тему
belka_bk,
Цитата:

Сообщение от Zuenf
Я думаю на сервере это логичней делать.


Zuenf 08.03.2014 11:03

Цитата:

Сообщение от рони
код должен срабатывать для всех ссылок а не только для одной

Не совсем понял, к чему это.:blink:
Я делал конкретно по "ТЗ"
Цитата:

потому что если я ухожу с link D меню перестает быть "current".
Т.е. какая-то обработка там уже есть, раз класс убирается.
И как я понял нужно было просто добавить несколько конкретных "id" при которых последняя ссылка будет активной.
А на счет смены класса активных ссылок средствами js ничего не говорилось. Я так понимаю там это уже реализовано на php. ;)

belka_bk 08.03.2014 11:34

Цитата:

Сообщение от Zuenf (Сообщение 301685)
Вот так попробуй:
<!-- sidebar -->
            <div class="span2 magic-menu-sidebar">
                <div class="hidden-phone hidden-tablet">
                    <h3>My title</h3>
                    <ul>
                        <li><a href="index.php?id=linka">Link A</a></li>
                        <li><a href="index.php?id=linkb">Link B</a></li>
                        <li><a href="index.php?id=linkc">Link C</a></li>
                        <li><a class="current" href="index.php?id=linkd">Link D</a></li>
                    </ul>
                </div>
            </div>
<!-- /sidebar -->
<script>
if(location.search.match(/id=link[xzyopm]/)){
var linkd = document.querySelector('.magic-menu-sidebar a[href*=linkd]');
linkd.className = linkd.className + ' current';
}
</script>

Я думаю на сервере это логичней делать.

Я тебя обожаю!!! =)
спасибо огромное !!! Немножко изменила.
Но даже без знаний js все отлично сработало, заменила просто линк на реальные ссылки =)
:dance:

А еще хотела узнать это будет нормально работать в любом браузере? разумеется если у человека не заблокирован js.

Zuenf 08.03.2014 11:47

Да, это вполне кроссбраузерный вариант.

belka_bk 08.03.2014 11:52

Цитата:

Сообщение от Zuenf (Сообщение 301708)
Да, это вполне кроссбраузерный вариант.

Очень рада, спасибо большое еще раз :thanks:


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