我正在建立一个网站,在某个时候人们可以投票赞成或不投票,他们每天只能这样做一次。我在网上发现了一个允许用户只投票一次的脚本,它有一个重置cookie的按钮,这样用户就可以再次投票。我希望按钮的投票功能在午夜后重置。这是html中的按钮激活的javascript代码。这是重置的.ld-btn-reset部分,所以我想让那个部分在午夜激活。
run : function()
{
var s = '';
s += "<div class='ld-bar-like'></div>";
s += "<div class='ld-bar-dislike'></div>";
s += "<div class='ld-clear-both'></div>";
$( this.domobj ).find( '.ld-stats-bar' ).html( s );
var _this = this;
$( this.domobj ).find( '.ld-btn-like' ).click( function(e){
e.preventDefault();
_this.vote( $(this), 'likes' );
});
$( this.domobj ).find( '.ld-btn-dislike' ).click( function(e){
e.preventDefault();
_this.vote( $(this), 'dislikes' );
});
$( this.domobj ).find( '.ld-btn-reset' ).click( function(e){
e.preventDefault();
var key = _this.getCookieName();
Cookie.del( key );
alert( 'Cookie has been reset!' );
});
this.send( '' );
},
答案 0 :(得分:2)
如果您不关心人们通过清除cookie来“欺骗系统”,那么您应该在设置cookie时控制cookie的到期日期,而不是尝试重置它。
var currentDate = new Date();
var expirationDate = new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate()+1, 0, 0, 0);
$.cookie("vote", "5", {expires: expirationDate});
这将占用当天,为其添加1天,并将日期设置为0:00
要在下面的评论中引用您的示例代码,您将使用以下内容:
var currentDate = new Date();
var expirationDate = new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate()+1, 0, 0, 0);
var expires = "; expires=" + expirationDate.toGMTString();
document.cookie = name + "=" + value + expires + "; path=/";
更详细地解释流程:
您的旧代码基本上是将24小时添加到当前日期和时间