Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   В какую сторону двигаться? Cookie (Javascript) (https://javascript.ru/forum/misc/79774-v-kakuyu-storonu-dvigatsya-cookie-javascript.html)

Malleys 25.03.2020 02:53

Да, как я вам и писал в сообщении №9, что основываться следует на текущем значении URL страницы, нужно найти ссылку, которую нужно «обвести в кружочек», а также ссылку, которая представляет «вкладку».

Mytnyi 25.03.2020 02:57

Malleys, спасибо большое за внимание уделенное теме. Завтра покурю тему, а то на работу.

рони 25.03.2020 08:03

Цитата:

Сообщение от Malleys
Сообщение от рони
правильно ли я понимаю, что если есть targetLink, то можно поиск categoryLink отменить?
Это нужно для выбора категории, когда нажата ссылка внутри вкладки, или на саму вкладку, или адекватное отображение меню при вводе ссылки, которой нет в меню.

не понимаю как может одновременно быть и targetLink и categoryLink, если в обоих случаях link.href === location.href и обратно, если есть категория, то как выбирается вкладка?

Malleys 25.03.2020 09:23

Цитата:

Сообщение от рони
не понимаю как может одновременно быть и targetLink и categoryLink, если в обоих случаях link.href === location.href и обратно, если есть категория, то как выбирается вкладка?


let categoryLink, targetLink;

Array.prototype.filter.call(document.querySelectorAll(".menu > li > a + ul a"), link => link.href === location.href).slice(0, 1).forEach(link => {
	if(targetLink) targetLink.classList.remove("target");
	link.classList.add("target");
	targetLink = link;
});

categoryLink = Array.prototype.find.call(document.querySelectorAll(".menu > li > a"), link => link.href === location.href);
categoryLink = targetLink ? targetLink.closest(".menu > li").querySelector("a") : categoryLink ? categoryLink : document.querySelector(".menu > li > a");
categoryLink.classList.add("active");


Среди всех ссылок, которые находятся под вкладками ищется та, которая указывает на текущую страницу, на такую найденную ссылку добавляется класс target (чтобы добавить эффект «обводка»). Такая ссылка есть не всегда, например, если нажали на саму вкладку, то конечно же такой ссылки не будет. Это и есть targetLink.

Находим на самих вкладках такую ссылку, адрес которой совпадает с текущим адресом страницы (если есть). А если нет, то определяется ссылка на ту вкладку, к какой категории относится текущая страница. На такую найденную ссылку добавляется класс active (чтобы добавить эффект «выбранная вкладка»). Это и есть categoryLink.

Вот я оставил только то, что имеет отношение к меню (с самыми нужными стилями), чтобы вы поняли принцип работы скрипа скрипта, а то получается вы не поняли, как устроены эти вкладки... https://plnkr.co/edit/YfEV8VisWdKF8Y...ipt.js&preview

рони 25.03.2020 10:05

Malleys,
спасибо, сейчас понятно.
:thanks:
как вариант поиск targetLink
Array.prototype.some.call(document.querySelectorAll(".menu > li > a + ul a"), link => {
    if(link.href !== location.href) return false;
    if(targetLink) targetLink.classList.remove("target");
	link.classList.add("target");
	targetLink = link;
    return true
});


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