javascript - 使用 localstorage 从 onclick 函数保存和检索用户布局首选项

标签 javascript jquery html css local-storage

我是使用 localstorage 的新手,但相信这是我需要用来存储 css 文件中的特定 ID 或 CLASS 的内容,以便在用户做出选择(在单击事件上)以显示“网格/列表”布局。这里首选本地存储吗?或者使用“sessionstorage”会更好吗?或者完全使用完全不同的方法会更好吗?如果是这样,又是什么?

我想要实现的是: 用户单击 2 个图标中的 1 个 - 这些图标需要存储我所做的 css 布局 ID 或类(“舒适”或“列表” View )。当用户浏览网站的其他页面时,会记住此首选项,因此如果用户返回此页面,布局仍然与他/她选择的布局相同。如果用户关闭浏览器然后重新打开该页面,同样适用。

添加时间缓存也是首选。例如,在清除布局之前,将布局在用户本地存储中保留“x”天。

任何帮助将不胜感激,因为我不知道如何开始。我已经看过大量示例,但似乎无法理解他们是如何做到的,更糟糕​​的是,我看到的示例似乎无法满足我的需求。

这是我到目前为止所拥有的:

JS

// Changing layout 'Cozy' to 'List'
$('.news_nav-options_list').on('click', function () {
    var cozy=document.getElementById('hideClass');
    cozy.style.display="none";

    var list=document.getElementById('showClass');
    list.style.display="block";

    $(this).addClass('active');
    $('.news_nav-options_cozy').removeClass('active');
});

// Changing layout 'List' to 'Cozy'
$('.news_nav-options_cozy').on('click', function () {
    var list=document.getElementById('hideClass');
    list.style.display="block";

    var cozy=document.getElementById('showClass');
    cozy.style.display="none";

    $(this).addClass('active');
    $('.news_nav-options_list').removeClass('active');
});

这是我迄今为止所拥有的演示:

<强> DEMO

我读到使用“.setItem() 和 .getItem” 与 localstorage 是首选,但同样,我不知道应该如何开始。 localstorage可以应用于我当前的js吗?

最佳答案

这不太正确,但我认为它应该为您指明您正在寻找的方向。

$(document).ready(function(){
    // Changing layout 'Cozy' to 'List'
    $('.news_nav-options_list').on('click', function () {
        changeToListView();
    });

    // Changing layout 'List' to 'Cozy'
    $('.news_nav-options_cozy').on('click', function () {
        changeToCozyView();
    });

    if (typeof(Storage) !== "undefined") {
        var view = localStorage.getItem("view");
        if (view && view == "cozy") {
            changeToCozyView();
        } else if (view && view == "list") {
            changeToListView();
        } else {
            // view isn't set, or is set to something we don't recognize
        }
    } else {
        // user's browser doesn't support localStorage
    }        
});

function changeToListView() {
    var cozy=document.getElementById('hideClass');
    cozy.style.display="none";

    var list=document.getElementById('showClass');
    list.style.display="block";

    storagePut("list");

    $(this).addClass('active');
    $('.news_nav-options_cozy').removeClass('active');
}

function changeToCozyView() {
    var list=document.getElementById('hideClass');
    list.style.display="block";

    var cozy=document.getElementById('showClass');
    cozy.style.display="none";

    storagePut("cozy");

    $(this).addClass('active');
    $('.news_nav-options_list').removeClass('active');
}

function storagePut(view) {
    if (typeof(Storage) !== "undefined") {
        localStorage.setItem("view", view);
    } else {
        // user's browser doesn't support localStorage
    }        
}

关于javascript - 使用 localstorage 从 onclick 函数保存和检索用户布局首选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42789429/

相关文章:

javascript - 显示警报时在后台运行代码

javascript - 绑定(bind)和解绑函数

javascript - Jquery div选择?悬停时

html - 如何将dialogflow与网站集成?

javascript - Rails 的远程表单 `disable_with` 功能完成后如何执行 Javascript?

javascript - 在 JavaScript 中分割字符串

javascript - tabindex focus 使用 CSS 调用子菜单

javascript - 如何停止 Bootstrap 轮播动画

javascript - 我可以从自定义匹配器中访问原始 select2 匹配器吗?

javascript - 属性选择器不改变属性