如何使用此代码设置cookie在x天后过期?

use*_*598 16 javascript cookies

可能重复:
使用JavaScript获取和设置单个cookie值的"最佳"方法是什么

所以我有这个代码(我没有制作),基本上是一个带X的容器,所以当我按下X时,div容器关闭.但是,刷新页面时,div容器将再次出现.

当这个人按下X按钮时,我怎么能这样做呢,那个人永远不会在那个页面上再次看到div容器(或者在30天的固定时间内)?

我想更进一步,如果可能的话,当人按下X按钮时,他/她将永远不会在我的网站上再次看到div容器,因为我计划在我的网站中实现相同的div容器.

希望这不是太混乱,有人可以帮助我.谢谢!

HTML代码:

<div id="bottom_ad">
    <div id="close_ad" onclick="close_bottom_ad();">X</div>
    <!-- Ad Content -->
</div>
Run Code Online (Sandbox Code Playgroud)

CSS代码:

#bottom_ad
{
    position: absolute;
    right: 0;
    bottom: 0;
    left: 0;
    height: 80px;
    background: #000;
}
#close_ad
{
    position: absolute;
    top: 8px;
    right: 8px;
    width: 15px;
    height: 15px;
    color: #fff;
}
Run Code Online (Sandbox Code Playgroud)

JavaScript(放置在文件底部,标记之前.)代码:

<script type="text/javascript">
    // I may have sorta kinda taken this function from W3Schools. :S
    function getCookie(c_name)
    {
        var i,x,y,ARRcookies=document.cookie.split(";");
        for (i=0;i<ARRcookies.length;i++)
        {
            x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
            y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
            x=x.replace(/^\s+|\s+$/g,"");
            if (x==c_name)
            {
                return unescape(y);
            }
        }
    }

    var ad_cookie = getCookie("closedAd");

    if (ad_cookie != null && ad_cookie != "")
    {
        document.getElementById("bottom_ad").style.display="none";
    }

    function close_bottom_ad()
    {
        document.getElementById("bottom_ad").style.display="none";
        document.cookie = "closedAd=true;";
    }
</script>
Run Code Online (Sandbox Code Playgroud)

jfr*_*d00 28

要在Cookie上设置30天到期日,您需要为Cookie添加到期时间.这是一个非常简单的cookie函数,可以为N天设置一个cookie:

function createCookie(name, value, days) {
    var date, expires;
    if (days) {
        date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        expires = "; expires="+date.toGMTString();
    } else {
        expires = "";
    }
    document.cookie = name+"="+value+expires+"; path=/";
}
Run Code Online (Sandbox Code Playgroud)

通过在cookie中设置适当的到期日期,它将在那时自动删除.

然后,当您的页面加载时(您必须等到页面完成加载才尝试修改它),您可以检查您的cookie closeAd是否已设置,如果是,请执行代码以隐藏广告.为了获得更加无闪烁的观看体验(因此广告不首先显示,然后关闭),您可以从隐藏广告开始,只有在没有Cookie的情况下才展示广告.或者,如果没有cookie,您只能将其动态添加到页面中.