我创建了一个简单的随机短语生成器,每次用户单击“生成”按钮时,它都会将短语添加到一个空的 div 中。每次单击都会重新生成短语。那部分就像一个魅力。
我想显示每个特定人员生成的最后 5 个短语(不是该站点的最后 5 个用户生成的)。也就是说,显示每次用户单击“生成”按钮时生成的最后五个短语的结果。
我认为(也许是错误的)最简单的方法是为生成的每个短语创建一个 cookie,然后只显示每个这些 cookie 的内容。
所以,我找到了一个jquery.cookie 插件,当有人使用它点击按钮时,我设法开始工作并创建一个 cookie:
$(document).ready(function(){
$("#button").click(function () {
$.cookie('cookie_1', $('#phrase_here').text(), { expires: 7 });
})
});
问题是我想存储最后五个短语。使用上述方法,每次点击都会覆盖 cookie。所以,我认为这样的事情会起作用:
if($.cookie('cookie_1') == null) {
$(document).ready(function(){
$("#button").click(function () {
$.cookie('cookie_1', $('#phrase_here').text(), { expires: 7 });
})
});
}
else{
$("#button").click(function () {
$.cookie('cookie_2', $('#phrase_here').text(), { expires: 7 });
})
};
但这就是正在发生的事情。我单击按钮,cookie_1 设置为 div“#phrase_here”中的文本。如果我再次单击该按钮,cookie_1 将更改为“#phrase_here” div 中的新短语。我认为我上面的语句会检查 cookie_1 是否存在,如果存在,则创建一个新的、不同的 cookie (cookie_2)。如果我单击按钮并重新加载页面,cookie_1 仍然设置。但是,如果我单击该按钮,它会设置 cookie_2 而不是 cookie_1。不知道为什么需要重新加载页面才能导致这种行为(这是我想要的)。
最终,我想使用相同的逻辑存储 5 个 cookie,如果没有 cookie,则创建一个。有5个之后,再覆盖cookie_1。不知道在那之后做什么,因为我认为我不能写一些会覆盖 cookie_2 的东西。
显然,有更好的方法来做到这一点。尽量避免使用数据库并在浏览器中完成所有操作。我知道这限制了可能性,并且不会对每个人都有效,但这没关系。暂时只是一个实验。
我愿意使用 JavaScript、jQuery 或必要时使用 PHP。我只是不确定如何最好地做到这一点。希望这个问题有意义。
更新:此代码可以很好地创建五个 cookie 而不会覆盖。现在的诀窍是如何在创建五个 cookie 后覆盖第一个 cookie,然后覆盖第二个,依此类推。