javascript - 执行在午夜重置投票 cookie 的函数

标签 javascript html

我正在建立一个网站,在某些时候人们可以投票赞成或反对,他们每天可能只会这样做一次。我在网上找到了一个脚本,它允许用户只投票一次,它有一个按钮可以重置 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( '' );
},

最佳答案

如果您不关心人们通过清除 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=/";

更详细地解释一下流程:

  1. 我们将“currentDate”设置为当前时间和日期
  2. 我们通过根据当前年、月、日构建日期来设置新的到期日期,然后加 1(使其成为明天早上的午夜)
  3. 我们将“expires”字符串设置为“;expires=”,然后将到期日期转换为 GMT 日期字符串
  4. 然后您可以设置 Cookie 名称、值和新的到期时间

您的旧代码基本上是在当前日期和时间上添加 24 小时

关于javascript - 执行在午夜重置投票 cookie 的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16611500/

相关文章:

html - 为什么我的页眉样式会影响我的内容 div?

php - 如何使用php删除html中的回车符?

javascript - 使用 JavaScript 理解匿名函数

javascript - AngularJS 对自定义指令的单向绑定(bind)

javascript - 如何阻止 dojo 滚动以形成焦点小部件?

javascript - 根据数据库中的下拉值设置 td 填充的背景颜色

javascript - 如何在javascript中添加 'delete all button'

javascript - Three.js 自定义着色器

javascript - 如何自动处理 javascript 函数调用并包装/装饰它

javascript - 监听事件,例如在 JavaScript 中添加新元素