【问题标题】:Using Cookies to set an alert in javascript使用 Cookies 在 javascript 中设置警报
【发布时间】:2016-11-13 20:01:01
【问题描述】:

我正在尝试创建一个脚本,当用户打开网站时,他或她将受到提示的欢迎,并且在收到警报后会说欢迎,但在提示中输入的内容也会设置一个 cookie 1 分钟我面临的问题是:
1.提示不显示
2. Cookie不会设置

function checkCookie()
{
    var username=getCookie("username");
    if (username!=null && username!="") {
        alert("Welcome again "+ username);  
    }
    else {
        username=prompt("Please input name:","");
        if (username !=null && username!="") {
            setCookie("username", username, 365);
        }
        else {
            alert("Error");
        }
    }
}
function setCookie (cname,cvalue,exdays)
{
    var d = new Date();
    d.setTime (d.getTime()+ (10*1000));
    var expires ="; expires= "+ d.toGMTString();
    document.cookie = cname + "=" + cvalue + "; " + expires; +"; path /";
}
function getCookie(cname)
{
    var name = cname + "=";
    var ca = document.cookie.split(';');
    for(var i=0; i<ca.length; i++){
        var c = ca[i];
        while (c.charAt(0)==' ') {
            c = c.substring(1);
        }   
        if (c.indexOf(name) == 0){
            return c.substring(name.length, c.length);
        }
    }
    return "";
}

【问题讨论】:

  • 您是否尝试过记录以查看代码的哪一部分不起作用。你可以试试 console.log() ?
  • 控制台没有错误
  • 我敢打赌你的代码没有问题,只是过期时间太短(只有 10 秒)
  • 不,我是故意这样做的,我的问题是 chrome 浏览器或其他问题

标签: javascript cookies


【解决方案1】:

尝试将var expires ="; expires= "+ d.toGMTString(); 替换为var expires ="; expires= "+ d.toUTCString();

过期时间保存为 Unix 时间戳。

编辑: 您还需要执行函数 checkCookie。我认为这很明显。

https://jsfiddle.net/osgohu5b/

【讨论】:

  • 我的问题是循环没有显示警报
  • 你的意思是什么循环?
【解决方案2】:

这是您的代码的 jsfiddle: https://jsfiddle.net/19yp8ucd/3/ 。 它工作正常。您只需要调用 checkCookie() 函数即可。

checkCookie();

请参阅小提琴的 .js 中的最后一行。

另外,您没有在 setCookie() 函数中使用天数。您可以在这里查看 setCookie()、getCookie()、eraseCookie() 的良好实现:https://stackoverflow.com/a/24103596/3946520

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-10
    • 2011-09-22
    • 1970-01-01
    • 2017-05-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多