Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在三个不同的菜单之间切换,并在加载新页面时保持最后选择的菜单打开?_Javascript_Php_Jquery_Ajax_Wordpress - Fatal编程技术网

Javascript 如何在三个不同的菜单之间切换,并在加载新页面时保持最后选择的菜单打开?

Javascript 如何在三个不同的菜单之间切换,并在加载新页面时保持最后选择的菜单打开?,javascript,php,jquery,ajax,wordpress,Javascript,Php,Jquery,Ajax,Wordpress,我对javascipt、jquery、php基本一无所知……不幸的是,我只知道html和css。但是今年秋天我要开始上学了!问题是我现在真的在为客户制作一个页面。时间如此之短 我需要三个不同的菜单,它可以在它们之间切换,而不会在加载新页面时更改。我制作了一个模型,其中唯一可点击的是顶部的三个选项卡,以及所有三个菜单上的菜单链接“tjenester”: 我有没有办法在这三个选项卡之间切换,以及它们的关联菜单,并在单击和打开另一个页面时保持打开状态 正如我所说,我是一个noobie…我需要在Wor

我对javascipt、jquery、php基本一无所知……不幸的是,我只知道html和css。但是今年秋天我要开始上学了!问题是我现在真的在为客户制作一个页面。时间如此之短

我需要三个不同的菜单,它可以在它们之间切换,而不会在加载新页面时更改。我制作了一个模型,其中唯一可点击的是顶部的三个选项卡,以及所有三个菜单上的菜单链接“tjenester”:

我有没有办法在这三个选项卡之间切换,以及它们的关联菜单,并在单击和打开另一个页面时保持打开状态


正如我所说,我是一个noobie…我需要在Wordpress中创建这个带有Avada主题的网站。我最初认为我可以通过将每个标签链接到不同的页面,并使用它们自己的自定义菜单来解决这个问题——这在Avada中很容易。但发现这当然是可怕的搜索引擎优化。。我不能有三个“主页”页面,三个“关于”页面等。尽管页面加载,我需要更改页眉并保持上次选择的状态。Avada主题已安装,初始设置位于。非常感谢您的帮助

我认为没有任何方法可以仅使用HTML和CSS在页面加载中保持状态。一个相当简单的JavaScript解决方案可能是基于本地存储中的设置将类应用于主体。然后,每次更改时,都必须在本地存储中设置最新的类

比如:

<script>
    function setMenu(menu) {
       localStorage.setItem("currentMenu", menu);
    }
    function getMenu() {
        var currentMenu = localStorage.getItem("currentMenu");
        if (currentMenu) {
            document.body.setAttribute("class", currentMenu);
        }
    }
    document.body.addEventListener("load", getMenu());
    var thingThatChangesTheMenu = document.getElementById("thingID");
</script>

功能设置菜单(菜单){
setItem(“当前菜单”,菜单);
}
函数getMenu(){
var currentMenu=localStorage.getItem(“currentMenu”);
如果(当前菜单){
document.body.setAttribute(“类”,currentMenu);
}
}
document.body.addEventListener(“加载”,getMenu());
var thinthatchangesmenu=document.getElementById(“thingID”);

[...]
菜单1
菜单2
菜单3
[...]

.Menu1容器{
显示:无;
}
.MENU2容器{
显示:无;
}
.Menu3容器{
显示:无;
}
body.menu1.menu1容器{
显示:块;
}
body.menu2.menu2容器{
显示:块;
}
body.menu3.menu3容器{
显示:块;
}

这是一个简化的版本,假设您不关心身体上的任何其他类。希望能有所帮助。

非常感谢您的回答。不幸的是,我几乎没有足够的经验来理解这些代码应该放在哪里:(我真的是个傻瓜,除了编辑现有的Wordpress css、html和基本php之外,还没有尝试过使用任何其他代码:-/我有没有办法用现有的Wordpress菜单“框架”来实现这一点-这样我就可以像在Wordpress admin中一样创建三个菜单,并通过向其中添加类来加载它们,而不是用代码来编写它们?另一个选项可能是,我创建一个包含三个菜单项的菜单,每个菜单项水平显示一个下拉菜单,并以某种方式使所选下拉菜单始终可见,尽管加载了新页面,但仍将保持可见。就像手风琴下拉,只是水平(我感觉迟钝)
<html>
    <body>
        [...]
        <button onclick="setMenu('menu1')">menu 1</button>
        <button onclick="setMenu('menu2')">menu 2</button>
        <button onclick="setMenu('menu3')">menu 3</button>
        [...]
    </body>
</html>
<style>
.menu1Container {
     display: none;
}
.menu2Container {
    display: none;
}
.menu3Container {
    display: none;
}
body.menu1 .menu1Container {
    display: block;
}
body.menu2 .menu2Container {
    display: block;
}
body.menu3 .menu3Container {
    display: block;
}
</style>