javascript - 我正在尝试在 <a> 标记上设置类名。问题是当我单击链接时,页面刷新并且该类被删除

标签 javascript html ajax laravel-6

我有以下 HTML 代码

<li>
    <a href="javascript:;"><i class="sidebar-item-icon ti-hummer"></i>
        <span class="nav-label">Product Management</span><i class="fa fa-angle-left arrow"></i></a>
    <ul class="nav-2-level collapse">
        <li>
            <a href="/admin/addProducts" id="addProductMenu" onclick="addActiveClass(this)" >Add Product</a>
        </li>
        <li>
            <a href="/admin/allProducts" id="allProductsMenu" onclick="addActiveClass(this)">All Products</a>
        </li>
        <li>
            <a href="/admin/recommendedProducts" id="recommendedMenu" onclick="addActiveClass(this)">Recommended</a>
        </li>
        <li>
            <a href="/admin/featuredProducts" id="featuredMenu" onclick="addActiveClass(this)">Featured</a>
        </li>
        <li>
            <a href="/admin/bestSellingProducts" id="bestSellingMenu" onclick="addActiveClass(this)">Best Selling</a>
        </li>
        <li>
            <a href="/admin/popularIndustriesProducts" id="popularIndustriesMenu" onclick="addActiveClass(this)">Under popular industries</a>
        </li>
    </ul>
</li>

我想要的是当我点击 <a> 中的任何一个时链接,javascript 函数 addActiveClass(this)被调用并添加一个类class='active'点击<a>标签。

JavaScript代码是

function addActiveClass(element) {
    var el = document.getElementById(element.id);
    el.classList.add("active");
    el.parentElement.classList.add("active");
}

我的问题是,当我单击链接时,将执行 javascript 函数并应用该类。然后,页面刷新,由于类是动态添加的,重新加载页面后,之前添加的类class='active'已删除。

刷新后我应该如何设置类?

这些列表位于加载更改的子页面的静态页面上。

最佳答案

感谢heleg的建议,它确实有效,

我做了以下事情

$(document).ready(function() {

var path = window.location.pathname.split("/").pop();
var parent = null;
var activeElement = null;
var target = null;

if (path == "") {
    path = "home";
}

if (path == "home") {
    target = $('nav div ul li a[href="/admin/' + path + '"]');
} else {
    target = $('nav div ul li ul li a[href="/admin/' + path + '"]');
}

target.addClass("active");

if (path != "home") {
    activeElement = document.getElementsByClassName("active");

    parent = activeElement[0].parentElement;

    parent = parent.parentElement;

    parent.classList.add("in");

    parent = parent.parentElement;

    parent.classList.add("active");
}
});

关于javascript - 我正在尝试在 <a> 标记上设置类名。问题是当我单击链接时,页面刷新并且该类被删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61198107/

相关文章:

javascript - 数组元素之间的过滤

javascript - 加载更多按钮脚本: image instead of text

html - CSS 中选择器的问题

javascript - 按退出键中止 AJAX 文件上传

javascript - AngularJS $uibModal 不工作

javascript - 我如何检查我的公共(public) API 的 XMLHttpRequest 是来 self 自己的 webapp 还是来自第三方客户端(以确保优先级)?

html - 无法让此按钮居中对齐

javascript - jQuery DataTable 行详细信息给出 "data is undefined"

javascript - 基于对象属性的数组和变量名的数组

javascript - 使用 ajax 和 jquery 上传文件和表单