【问题标题】:reading dynamically created cookie names读取动态创建的 cookie 名称
【发布时间】:2017-01-03 23:56:22
【问题描述】:

我有一组用作警报的热门消息。他们有一个 X 来关闭它们。关闭它们会设置一个 cookie,使它们永远消失,cookie 的名称取自您关闭的特定顶部消息的id

我有一个用于创建、读取和擦除 cookie 的基本代码,如下所示:

function createCookie(name, value, days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
        var expires = "; expires=" + date.toGMTString();
    } else
        var expires = "";
    document.cookie = name + "=" + value + expires + "; path=/";
}

function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for (var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ')
        c = c.substring(1, c.length);
        if (c.indexOf(nameEQ) == 0)
            return c.substring(nameEQ.length, c.length);
    }
    return null;
}

function eraseCookie(name) {
    createCookie(name, "", -1);
}

然后我像这样创建动态命名的 cookie:

if ($(".timed-top-message").size() > 0) {
    $(".timed-top-message").on("click", "i", function() {
        var CookieUniqueIdentifier = $(this).parent().attr("id")
        $(this).parent().fadeOut(200);

        createCookie(CookieUniqueIdentifier, 'true', 100000)
        console.log('cookie created');
    });
}

这就是工作。我的问题是当我必须阅读 cookie 时。这会引发错误:

(function() {
    var checkForCookiez = readCookie(CookieUniqueIdentifier); // i read the cookie
    if (!checkForCookiez) { // if it doesn't exist
        console.log('it does not exist')
    } else{ // if it does exist
        console.log('it does exist')
    }
})();

错误是

app.js:1142 Uncaught ReferenceError: CookieUniqueIdentifier is not defined

我知道CookieUniqueIdentifier 被限定在一个点击函数内,它无法检索它。但我想要实现的是一个系统,可以动态地创建由唯一 id 命名的 cookie,然后以动态方式读取它们。

我对 jquery 不是很好,我想知道我是否走在正确的道路上。非常感谢任何建议。

【问题讨论】:

  • 您遇到了什么错误?请注意,console.log 语句中存在语法错误,其中包含 '
  • @JavaKungFu 刚刚更新了问题
  • 我在这里看到 2 个选项。选项 1:在保存的 cookie 的 ID 范围内保留一个数组。选项 2:使用 document.cookie 检索所有 cookie 的列表并进行迭代。当然,选项 1 不会在会话中持续存在,因此可能并不理想。
  • 你可以在你的点击处理函数中使用$(this).parent().attr("id") - 它是同一个元素吗?
  • @JavaKungFu 它已经在那里了

标签: javascript jquery cookies cookiestore


【解决方案1】:

我认为这里最好的方法是在显示警报消息(在页面加载时)之前读取 cookie,并且仅在 cookie 不存在时才显示警报。您尚未显示该部分代码,但如果您包含它,我很乐意在此处添加相关代码更新。

【讨论】:

  • 感谢您的帮助,但我认为您偏离了轨道。 :(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-24
  • 2012-06-02
  • 1970-01-01
  • 1970-01-01
  • 2019-02-24
相关资源
最近更新 更多