提问者:小点点

改变切换状态时如何删除会话存储?


我使用toggleClass在jquery中编写了一个函数。 函数是用按钮调用的。 我设法将其结果保存在会话存储中,因此当刷新页面时,页面上的暗对比被保存。 当我切换回切换状态时会出现问题。 然后会话存储会自动加载之前的设置,结果我仍然保持暗对比。 我尝试用另外两种方法编写这个脚本,使其正常工作,但不幸的是没有得到积极的结果。 如果你们中有人能帮助我,我将非常感激。 这几个小时我一直在想明白。

我的JQuery代码:

$(document).ready(function(){
    var state = sessionStorage.getItem("toggleState");
    if(state == "true"){
        $('*').not('div.container *').toggleClass("black-contrast");             
        $('header').toggleClass("black-contrast-border");
        $('img, div.container').toggleClass("overlay");
    }

    $('#black-contrast').click(function(){
        $('*').not('div.container *').toggleClass("black-contrast");             
        $('header').toggleClass("black-contrast-border");
        $('img, div.container').toggleClass("overlay");
    });
});

我试着这样做:

$(document).ready(function(){
    $('*').not('div.container *').toggleClass(sessionStorage.toggled);
    $('#black-contrast').on('click',function(){
        if (localStorage.toggled != "black-contrast" ) {
            $('*').not('div.container *').toggleClass("black-contrast", true );
            localStorage.toggled = "black-contrast";
        } else {
            $('*').not('div.container *').toggleClass("black-contrast", false );
            localStorage.toggled = "";
        }
    });
});

共1个答案

匿名用户

我认为问题出在onclick回调函数上,您没有切换SessionStorage.ToggleState

您需要在用户每次单击该按钮时切换SessionStorage.ToggleState。

这样试试看

$(document).ready(function() {                                               
    var state = sessionStorage.getItem("toggleState");                         
    if (state == "true") {                                                     
        $('*').not('div.container *').toggleClass("black-contrast");            
        $('header').toggleClass("black-contrast-border");                      
        $('img, div.container').toggleClass("overlay");                        
    }                                                                          
                                                                               
    $('#black-contrast').click(function() {                                    
        const state = sessionStorage.getItem("toggleState");                   
        state ? sessionStorage.removeItem("toggleState") : sessionStorage.setItem("toggleState");
        $('*').not('div.container *').toggleClass("black-contrast");            
        $('header').toggleClass("black-contrast-border");                      
        $('img, div.container').toggleClass("overlay");                        
    });                                                                        
});