Если URL является корневым доменом, добавьте класс в идентификатор

#javascript #jquery #css

#javascript #jquery #css

Вопрос:

Я хочу получить пользователя url на своем сайте. Я хочу показать, является ли URL-адрес пользователя корневым доменом, добавьте active class в id home-item-menu . Если нет, ничего не делайте.

Я использовал window.location.href и window.location.host , но не работал.

Для остальной части раздела я использовал indexof (и строку, которая есть в URL), но поскольку в корневом домене нет никакой строки, я не знаю, как это сделать.

   <nav class="cl-effect-5">
            <li class="nav-item" id="home-item-menu">
                <a class="nav-link menu-rucab js-scroll-trigger" href="#home"><span data-hover="HOME">HOME</span></a>
            </li>
                    </nav>
                  <nav class="cl-effect-5">
            <li class="nav-item" id="rucab-item-menu">
                <a class="nav-link menu-rucab js-scroll-trigger" href="#rucab"><span data-hover="RUCAB">RUCAB</span></a>
            </li>
             </nav>
                    <nav class="cl-effect-5">
            <li class="nav-item" id="inscripciones-item-menu">
                <a class="nav-link menu-rucab js-scroll-trigger" href="#inscripciones"><span data-hover="INSCRIPCIONES">INSCRIPCIONES</span></a>
            </li>
             </nav>
             <nav class="cl-effect-5">
            <li class="nav-item" id="habitaciones-item-menu">
                <a class="nav-link menu-rucab js-scroll-trigger" href="#habitaciones"><span data-hover="HABITACIONES">HABITACIONES</span></a>
            </li>
             </nav>
              <nav class="cl-effect-5">
            <li class="nav-item" id="staff-item-menu">
                <a class="nav-link menu-rucab js-scroll-trigger" href="#staff"><span data-hover="STAFF">STAFF</span></a>
            </li>
             </nav>
             <nav class="cl-effect-5">
            <li class="nav-item" id="blog-item-menu">
                <a class="nav-link menu-rucab js-scroll-trigger" href="#contact"><span data-hover="BLOG">BLOG</span></a>
            </li>
             </nav>
                    <nav class="cl-effect-5">
            <li class="nav-item" id="contacto-item-menu">
                <a class="nav-link menu-rucab js-scroll-trigger" href="#contacto"><span data-hover="CONTACTO">CONTACTO</span></a>
            </li>
             </nav>
  

jQuery/Javascript

 $( document ).ready(
    function() {
var url = window.location.href;
var host = window.location.host;
if(url.indexOf('http://'   host   '/') != -1) {
    document.getElementById("home-item-menu").classList.add("active");
}
if (document.URL.indexOf("habitaciones") > -1)
{
    document.getElementById("habitaciones-item-menu").classList.add("active");

} else if (document.URL.indexOf("contacto") > -1) {
    document.getElementById("contacto-item-menu").classList.add("active");

} else if (document.URL.indexOf("rucab") > -1) {
    document.getElementById("rucab-item-menu").classList.add("active");

} else if (document.URL.indexOf("inscripciones") > -1) {
    document.getElementById("inscripciones-item-menu").classList.add("active");

} else if (document.URL.indexOf("staff") > -1) {
    document.getElementById("staff-item-menu").classList.add("active");

} else if (document.URL.indexOf("blog") > -1) {
    document.getElementById("blog-item-menu").classList.add("active");

}
});
  

Ответ №1:

Вы можете использовать условие window.location.pathname === '/' :

 if(window.location.pathname === '/') {
    document.getElementById("home-item-menu").classList.add("active");
}
  

Ответ №2:

Привет, @Pedro Corchero Murga для достижения этой цели вы можете использовать сеансы javascript, установить текст элемента навигации в сеанс javascript и получить этот сеанс при загрузке функции и проверить условия, если вы не знакомы с сеансами javascript, вы можете увидеть эту ссылку:https://www.w3schools.com/jsref/prop_win_sessionstorage.asp

Ответ №3:

Прежде всего, определите, как вы хотите сообщить своему приложению, является ли это мой корневой URL, какой из способов добиться этого заключается в следующем;

 function isAtRoot () {
    // Let's say you're currently at 'https://myhome.domain/',
    // and this is your root.
    var href = window.location.href,
        urlWithoutQueryString = href.split('?')[0],
        host = window.location.host,
        regexp = new RegExp("^https?://"   host   "/?$", "i");

    return !!urlWithoutQueryString.match(regexp);
}
  

Или вы также можете использовать window.Расположение.имя_патья для этого.

Затем запустите свой javascript, как указано выше, следующим образом,

 if (isAtRoot()) {
    document.getElementById("home-item-menu").classList.add("active");
}
  

Однако я бы посоветовал вам составить список путей для вашего сайта и присвоить ему псевдоним или имя. Затем вместо этого запустите что-то вроде isAtRoot против него, что будет иметь более надежную точность для будущих ссылок.

Комментарии:

1. Хороший ответ!! Как я даю ему псевдоним в моем списке путей? Какую строку мне нужно использовать. Спасибо.

2. Ну, одним из способов выразить это, вы можете использовать объект для пары ключ-значение ваших путей, где вы можете использовать key as для указания псевдонима, чтобы избежать дубликатов.

3. Я новичок в этом, извините, я ничего не понимаю, можете ли вы указать мою точную строку, которую мне нужно вставить? Спасибо.