Javascript 使用本地存储或cookie检测菜单单击
如果客户单击megaMenu,我需要设置cookie或使用本地存储。默认情况下,这需要为false,如果客户单击菜单按钮,则在下一页上设置为true。任何帮助都将不胜感激。以下是我到目前为止所掌握的内容,但我仍停留在如何在第二页获得megaClicked=true的问题上Javascript 使用本地存储或cookie检测菜单单击,javascript,Javascript,如果客户单击megaMenu,我需要设置cookie或使用本地存储。默认情况下,这需要为false,如果客户单击菜单按钮,则在下一页上设置为true。任何帮助都将不胜感激。以下是我到目前为止所掌握的内容,但我仍停留在如何在第二页获得megaClicked=true的问题上 var megaClicked = { value: false }; var megaMenu = $("#menu-top-navigation > div"); // check local storage on
var megaClicked = { value: false };
var megaMenu = $("#menu-top-navigation > div");
// check local storage on page load
if (localStorage.getItem('mega')) {
megaClicked = JSON.parse(localStorage.getItem('mega'))
}
megaMenu.bind('click', function () {
megaClicked.value = true;
localStorage.setItem('mega', JSON.stringify(megaClicked));
})
如果存在,则获取值,如果不存在,则存储值
var megaMenu = $("#menu-top-navigation > div");
// check local storage on page load
if (localStorage.getItem('mega')) {
var megaClicked = JSON.parse(localStorage.getItem('mega'))
}else{
var megaClicked = { value: false };
localStorage.setItem('mega', JSON.stringify(megaClicked));
}
megaMenu.bind('click', function () {
megaClicked.value = true;
localStorage.setItem('mega', JSON.stringify(megaClicked));
})
请记住,一旦您运行代码,本地存储项将一直保留,直到您将其删除。因此,首先,if将始终为真。也许较短的版本可以是:
if (+localStorage.getItem('mega')) {
var megaClicked = +localStorage.getItem('mega');
}else{
localStorage.setItem('mega', 0);
}
$("#menu-top-navigation > div").bind('click', function () {
localStorage.setItem('mega', 1);
})
下面的演示在此不起作用,因此。要测试功能演示,请转到此。它有两页:
- 由于页面位于同一域中,因此两个页面共享相同的Web存储。让两个页面共享相同的外部脚本将一致地对相同的Web存储应用相同的行为
- 函数
传递一个指定为menuUse(temp)
的布尔值。如果要在检测到“已使用”标志后将其删除,请将temp
传递为temp
:“已使用”
temp
参数,请将所有名为:localStorage
的对象更改为sessionStorage
在演示和演示中对详细信息进行了评论。演示不起作用,请参阅。
演示
$(函数(){
//如果要在检测到标志后将其从存储器中删除,请传递true
menuUse();
$('#mega')。在('click',showHide');
//无论何时使用megamenu,“used”(已使用)标志均存储为true
函数showHide(e){
$(this.find('ul').slideToggle();
setItem(“已使用”,JSON.stringify(“已使用”);
}
//在第1页或第2页的每次页面加载上,都会检查“已使用”标志
函数菜单(临时=假){
var data=JSON.parse(localStorage.getItem(“used”);
如果(数据==“已使用”){
返回动作(temp);
}else if(数据===null){
console.log('Mega未使用');
返回false;
}否则{
log('标志尚不存在');
返回false;
}
}
//如果menuUse通过true且“used”标志为true,则该标志将被删除
功能动作(温度){
如果(临时){
log('Mega used,webStorage条目renoved');
localStorage.removietem(“已使用”);
}否则{
console.log(“Mega-used”);
}
返回false;
}
});代码>
ul{
列表样式:无;
}
.隐藏{
显示:无
}
a{
显示:块
}
第1页
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
您的代码有什么问题吗?抱歉,我刚刚编辑了这个问题。您认为如何改进代码@埃梅厄
menuUse(true)