如何删除最后一个cookie集,名称为delete_?

时间:2014-03-08 18:06:17

标签: javascript cookies

在我的页面上,您可以设置指向其他网页的链接,例如首页。您可以通过将地址写入其中来创建指向其他页面的链接,并选择一张图片来表示它。什么链接和图片存储为cookie。您还可以通过按十字形来删除链接,该十字形创建另一个名为delete_的cookie(“_”表示它删除了哪个cookie,delete1删除了屏幕上的link1)。但后来有人后悔他们的删除,并希望删除链接,这很容易,只是删除删除cookie。在“设置”中,我想要一个按钮来撤消上次删除,删除最后一个以删除开头的cookie集。
例如,当我用javascript调用console.log(document.cookies)时,我会回来:

"link1=http://google.com; image1=http://...; delete1=true; link2=http://google.com; image2=http://...; link3=http://google.com; image3=http://...;  delete3=true; link4=http://google.com; image4=http://..."

如果我按下撤销按钮delete3 = true cookie将被删除,下次delete1 = true后将被删除。如何完成此撤消删除按钮?

1 个答案:

答案 0 :(得分:1)

您可能希望首先使用以下内容解析cookie:

function parseCookies() {
    str = document.cookie;
    var cookies = {};
    if (str === ""){return cookies;}
    var list = str.split(";");
    for(var i = 0; i < list.length; i++) {
        var cookie = list[i].trim();
        var p = cookie.indexOf("=");
        var name = cookie.substring(0,p);
        cookies[name] = decodeURIComponent(cookie.substring(p+1));
    }
    return cookies;
}

然后你可以找到最高删除的关键字:

function newestDelete(dict){
    console.log(dict);
    keylist = Object.keys(dict);
    delnums = [];
    for (var i = 0; i < keylist.length; i++){
        if(keylist[i].indexOf('delete') > -1){
            delnums.push(parseInt(keylist[i].replace('delete', '')));
        }
    }
    return "delete" + Math.max.apply(Math, delnums);
}