Get a cookie value (javascript)

Get a cookie value (javascript)

本文关键字:javascript value cookie Get      更新时间:2023-09-26

所以我是新的Javascript,我正试图获得一个cookie值来跟踪测试。

我有六个问题,当一个问题完成时,我将"计数器"增加1个值,这样如果用户在问题4时失去连接,计数器将为4。然后,当他们重新连接时,我可以从cookie中获得计数器编号并从问题4启动,而不是从问题1重新启动用户。

这是我的cookie, counter是存储问题编号的数字。

 document.cookie = "value1=" + one + ";value2" + two + ";value3=" + three + ";value4" + four + ";value5=" + five + ";value6=" + six + ";count=" + counter + ";expires=" + exp.toUTCString();

这是我试图找出如何值存储的尝试,我已经尝试寻找计数器,"计数","计数=",和"计数=6"

function getCookie(cookieName) {
            var name = cookieName + "=";
            var ca = document.cookie.split(';');
            for (var i = 0; i < ca.length; i++) {
                var c = ca[i].trim();
                if ((c.indexOf(i)) == (all the options listed above)) {
                    alert("found");
                }
            }
            return "undefined";
        }

我不知道什么被存储在哪里。是的,数组应该通过cookie中的split()按";"进行拆分。当我在循环中对每个变量"I"调用警报时,我得到的值如"counter=6"。

我在实际指定某种"if"语句来捕获计数器变量时遇到了麻烦。

谢谢!

您没有正确使用indexOf

function getCookie(cookieName) {
    var name = cookieName + "=";
    var ca = document.cookie.split(';');
    for (var i = 0; i < ca.length; i++) {
        var c = ca[i].trim();
        if ((c.indexOf(name)) == 0) {
            alert("found");
            return c.substr(name.length);
        }
    }
    alert("not found");
    return null;
}

如果您将cookie转换为键值对,则可以更容易地以这种方式访问cookie。你可以这样做:

  const cookiesArray = document.cookie.split(";").map((cookie) => cookie.trim());
  const cookiesHashmap = cookiesArray.reduce((all, cookie) => {
    const [cookieName, value] = cookie.split("=");
    return {
      [cookieName]: value,
      ...all,
    };
  }, {});