Javascript 如何删除最后一个名为delete\的cookie集?

Javascript 如何删除最后一个名为delete\的cookie集?,javascript,cookies,Javascript,Cookies,在“我的页面”中,您可以设置指向其他页面的链接,如起始页面。通过将地址写入另一页并选择一张图片来表示它,可以创建指向另一页的链接。链接和图片存储为cookie。您还可以通过按下一个十字来删除链接,该十字创建另一个名为delete_u的cookie(“_u”表示它删除的cookie,delete1在屏幕上删除link1)。但是后来有人后悔删除了链接,想把删除的链接拿回来,这很容易,只要删除删除cookie就行了。在“设置”中,我需要一个按钮来撤消最后一次删除,删除最后一个cookie集,从dele

在“我的页面”中,您可以设置指向其他页面的链接,如起始页面。通过将地址写入另一页并选择一张图片来表示它,可以创建指向另一页的链接。链接和图片存储为cookie。您还可以通过按下一个十字来删除链接,该十字创建另一个名为delete_u的cookie(“_u”表示它删除的cookie,delete1在屏幕上删除link1)。但是后来有人后悔删除了链接,想把删除的链接拿回来,这很容易,只要删除删除cookie就行了。在“设置”中,我需要一个按钮来撤消最后一次删除,删除最后一个cookie集,从delete开始
例如,当我使用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之后将被删除。如何完成此撤消删除按钮?

您可能需要首先使用以下内容解析cookies:

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);
}
函数parseCookies(){
str=document.cookie;
var cookies={};
如果(str==“”){返回cookies;}
var list=str.split(“;”);
对于(变量i=0;i
然后,您可以通过如下方式找到最高删除的键:

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);
}
函数newestDelete(dict){
控制台日志(dict);
keylist=Object.keys(dict);
德尔努姆斯=[];
对于(var i=0;i-1){
push(parseInt(keylist[i].replace('delete','');
}
}
返回“delete”+Math.max.apply(Math,delnums);
}

我认为不能保证订购饼干。如果必须知道最后一组,则可能需要添加时间戳。如果你解释了你实际上试图用delete1、delete2等来解决的问题,那么我们可能会建议一种更好的方法来解决你的问题。如果我给delete cookie一个时间戳而不是仅仅“true”,你能写几行代码来删除具有最后一个时间戳的cookie吗?是的,可以编写代码来这样做。我认为你最好描述一下你的实际问题,让人们想出一个更简单的解决方案,因为时间戳似乎比可能需要的工作量要多。这里的一个常见问题是,人们在选择解决方案时寻求帮助,而没有描述实际问题。这意味着我们没有能力为您指出更好的解决方案(这通常是可以做到的)。现在详细描述整个问题,希望您能帮助我!所以你的问题实际上与cookies无关,而是关于撤销功能?谢谢你的工作,但这不是我想要删除的删除率最高的cookie。这是最新的一组,因为cookies可能没有按顺序设置。对不起,解释得不好。