0

嗨,我正在将 css 应用于我的列表元素之一,它位于

  • 母版页中的标记。因此,当我单击此链接时,样式已被应用,但页面重新加载,然后应用的样式再次重置为默认值,这是我的代码,有人可以帮助我吗?请?

     function SelectThis(ctrl) {
            debugger;
            var list = document.getElementById("myslidemenu").getElementsByTagName('a');
    
            for (i = 0; i < list.length; i++) {
                list[i].style.color = "white";
                list[i].style.background = "#414141";
            }
            ctrl.style.background = "black";
            ctrl.style.color = 'yellow';
        }
    

    但因为我点击一个超链接。母版页重新加载,所选样式丢失

  • 4

    2 回答 2

    0

    由于它是一个超链接,它位于<li>使用内部

    e.preventDefault(); 将停止<a>标签的默认操作

    更新:

    list[i].addEventListener('click',preventReload);

    function preventReload(e){
        e.preventDefault();
    }
    

    将此代码添加到 for 循环中,这将停止超链接的默认功能,即停止页面重新加载。

    于 2013-06-25T10:19:07.543 回答
    0

    如果您需要重新加载页面,因为它是子页面的菜单,那么我这样做的方法是:

    1. 为样式定义一个类
    2. 将当前页面 url 与 a href url 进行比较(执行此操作的各种方法和各种级别的匹配)
    3. 如果它们匹配,则将类应用于该元素

    我会做这个服务器端,而不是 javascript。

    另一种选择是使用 cookie/session 变量,不确定 C# 语法,我最近在 PHP 中这样做,并在过滤一些数据后使用 AJAX 设置会话变量,以便在单击下一级时记住当前状态。

    于 2013-06-25T11:18:22.427 回答