我有一个getter从cookie中获取值。

现在我有了两个cookie,名字分别是shares=和obligation =。

我想让这个getter只从义务cookie中获取值。

我怎么做呢?因此for语句将数据拆分为单独的值,并将其放入数组中。

 function getCookie1() {
    // What do I have to add here to look only in the "obligations=" cookie? 
    // Because now it searches all the cookies.

    var elements = document.cookie.split('=');
    var obligations= elements[1].split('%');
    for (var i = 0; i < obligations.length - 1; i++) {
        var tmp = obligations[i].split('$');
        addProduct1(tmp[0], tmp[1], tmp[2], tmp[3]);
    }
 }

当前回答

您可以使用js-cookie库来获取和设置JavaScript cookie。

包括到你的HTML:

<script src="https://cdn.jsdelivr.net/npm/js-cookie@2/src/js.cookie.min.js"></script>

创建Cookie。

Cookies.set('name', 'value');

阅读Cookie:

Cookies.get('name'); // => 'value'

其他回答

我的解决方案是:

function getCookieValue(cookieName) {
    var ca = document.cookie.split('; ');
    return _.find(ca, function (cookie) {
        return cookie.indexOf(cookieName) === 0;
    });
}

该函数使用Underscorejs _.find-函数。如果cookie名称不存在,则返回undefined

下面是一行代码,可以获得具有特定名称的cookie值,而不需要任何外部库:

const value = ('; '+document.cookie).split(`; COOKIE_NAME=`).pop().split(';')[0];

这个答案是基于kirlich的聪明的解决方案。这个解决方案的唯一妥协是,当cookie不存在时,您将得到一个空字符串。不过,在大多数情况下,这不应该成为交易破坏者。

我写这篇文章是为了在Internet Explorer 11和现代浏览器(如Chromium Edge和Firefox)下工作。

这将获得一个HttpOnly属性为false的cookie值。

    function getCookieValue(keyName) {

        let returnValue = undefined;

        if (keyName && document.cookie) {

            let cookieArray = decodeURIComponent(document.cookie).split('; ');
            for (var i = 0; i < cookieArray.length; i++) {

                if (cookieArray[i]) {
                    let key = cookieArray[i].split('=')[0];
                    if (key && key === keyName) {
                        let value = cookieArray[i].split('=')[1];
                        returnValue = value;
                        break;
                    }
                }

            }

        }

        return returnValue;

    }

这是一个很简短的版本

 function getCookie(n) {
    let a = `; ${document.cookie}`.match(`;\\s*${n}=([^;]+)`);
    return a ? a[1] : '';
}

注意,我使用了ES6的模板字符串来组成正则表达式。

如果你使用jQuery,我建议你使用这个插件:

https://github.com/carhartl/jquery-cookie https://github.com/carhartl/jquery-cookie/blob/master/jquery.cookie.js

<script type="text/javascript"
 src="//cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js">

所以你可以这样读cookie:

var value = $.cookie("obligations");

你也可以写cookie:

$.cookie('obligations', 'new_value');
$.cookie('obligations', 'new_value', { expires: 14, path: '/' });

删除cookie:

$.removeCookie('obligations');