【问题标题】:Navbar active page导航栏活动页面
【发布时间】:2021-08-18 04:40:23
【问题描述】:

我有一个关于突出显示的导航栏菜单的问题,该菜单仅在我们单击它时才会突出显示。为此,我正在使用 javascript。但是,每个页面都有自己的子页面,例如页面Home有一个local/home的链接,但是它的内容会指向local/home/content。子链接不会使导航栏发挥作用导航栏被编码在不同的文件中,我只是在主页和其他页面中扩展。我不太擅长解释,但如果我可以详细说明任何部分,我会这样做。下面我附上了我的 JS 和我的导航栏:

导航栏:

        <ul class="navbar-nav mr-auto" id="nav">
            <li class="nav-item">
                <a class="nav-link active" href="{{ url('/') }}">Home
                    <span class="sr-only">(current)</span>
                </a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="{{ route('courses') }}">opportunities</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="{{ route('events') }}">events</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="{{ route('uqalc') }}">courses</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="{{ route('contact') }}">contact</a>
            </li>
        </ul>

Javascript:

const currloc = location.href;
        const menuItem = document.querySelectorAll('a');
        const menuLen = menuItem.length;
        for (let i = 0; i < menuLen; i++) {
            menuItem[i].classList.remove('active');
            if (menuItem[i].href === currloc) {
                menuItem[i].className = "nav-link active";
            }
        }

【问题讨论】:

  • 导航到链接时,链接的 href 是否与 url 匹配?我的意思是你在打开链接时重定向用户吗?
  • 不,它没有。那是因为它在路由 web.php 上发生了变化。我正在使用 Laravel 框架。

标签: javascript html css web


【解决方案1】:

在这里,如果窗口位置是https://www.google.com/index.html,我将活动类添加到.navbar-nav 内的锚标记

然后这段代码在.navbar-nav中找到一个锚标签,如果锚标签href应该是index.html,那么这段代码将active类添加到锚标签

    function removeQueryString(url) {
        return url.split('?')[0]
    }
    [].forEach.call(document.querySelectorAll('.navbar-nav a'), function(elem) {
        if (removeQueryString(elem.href) === removeQueryString(window.location.href))
        elem.classList.add('active')
        else
        elem.classList.remove('active')
    })

【讨论】:

  • 非常感谢您的帮助,但我试过了,结果和我之前的一样。还是我需要添加其他内容?
  • 什么是页面类型 HTML 或 PHP?我的意思是 index.php 或 index.html
  • function myFunction(e) { var elems = document.querySelectorAll("a"); [].forEach.call(elems, function(el) { el.classList.remove("active"); }); e.target.className = "导航链接激活";我试过这个,它适用于子页面,但不适用于其他导航栏。
  • 能否分享您的网站实时链接,以便我查看
  • 链接:yutp-uqal.com/home-events 在它下面有 2 张卡片。如果我单击“详细信息”,它仍然会重新加载同一页面,只是链接将其路径更改为不同的内容。这就是导航栏开始不起作用的地方。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-29
  • 2013-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-29
相关资源
最近更新 更多