初始化和删除Cookies

时间:2014-10-12 02:49:45

标签: javascript cookies

我是javascript的新手,并坚持使用cookies的以下问题

问题

以下问题中的Cookie值是名称。

我正在尝试从Cookie中显示用户的名字。打开页面时,如果存在cookie值,则必须使用适当的问候语显示cookie值。但是,如果打开页面时没有cookie值,则必须弹出一个询问用户名称的提示框。如果用户的名称(cookie值)在页面上显示错误,例如John打开页面并显示的名称是Paul,那么他必须点击“如果你不是Paul就点击这里”并且必须删除cookie约翰必须看到一个提示框,询问他的名字。然后新的cookie值必须是John在提示框中输入的内容

代码

祝贺部分工作正常。我有以下代码.FYI,我在网站上测试,而不是本地机器。

<script>
var now = new Date();
var hours = now.getHours();
var name, greeting, count,a;
if(hours < 12)
{
    greeting = "Good Morning";
}
else
{
    if(hours < 18)
    {
        greeting = "Good Afternoon";
    }
    else
    {
        greeting = "Good Evening";
    }
}
if(document.cookie)
{
    var newCookie = document.cookie;
    var cookieVals = newCookie.split("=");
    name = cookieVals[1];
}
else 
{
    name = window.prompt("Please enter your name","name");
    document.cookie = "name=" + name;
}
a = greeting + " " +name + ", Welcome to Survey Page! </h1>" + "<a href = '#' onClick='return false;' onMouseDown='wrongPerson()'> " +"Click here if you are not " + name + "</a>";
function wrongPerson()
{
    document.cookie= "name=; expires=Thu, 01 Jan 1970 00:00:00 UTC";
    location.reload();
}
<p><span id="verify"></span></p>
<script>document.getElementById("verify").innerHTML = a;</script>

输出

我收到以下输出

晚安74bec77-148138c40e3-42e9b6fa-5; _ga,欢迎来到调查页面!如果你不是74bec77-148138c40e3-42e9b6fa-5,请点击这里; _ga

当我重新加载页面或点击“如果你不是74bec77-148138c40e3-42e9b6fa-5; _ga”这一链接时,没有任何反应。

有人可以开导我吗?

2 个答案:

答案 0 :(得分:0)

你的javascript:

if(document.cookie)
{
    var newCookie = document.cookie;
    var cookieVals = newCookie.split("=");
    name = cookieVals[1];
}

检查cookie中是否存在任何内容,如果是,则不会要求新名称。当用户点击时我不是...那么函数wrongPerson()将cookie设置为“name = ........”,当您从if开始比较时,它将始终返回是的,因为

  

在javascript中,非零值为TRUE

因此它会认为用户在场。如果您要使功能wrongPerson()制作Cookie 0"",那么if将获得FALSE和声明(用于询问姓名)将被执行。

已修复功能:

function wrongPerson()
{
    document.cookie= "";
    location.reload();
}

答案 1 :(得分:0)

创建/调用函数它更容易理解。 source

        <!DOCTYPE html>
<html>
<head>
<script>

function setCookie(cname,cvalue,exdays) {
    var d = new Date();
    d.setTime(d.getTime() + (exdays*24*60*60*1000));
    var expires = "expires=" + d.toGMTString();
    document.cookie = cname+"="+cvalue+"; "+expires;
}

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) != -1) {
            return c.substring(name.length, c.length);
        }
    }
    return "";
}

function checkCookie() {
    var user=getCookie("username");
    if (user != "") {
        alert("Welcome again " + user);
    } else {
       user = prompt("Please enter your name:","");
       if (user != "" && user != null) {
           setCookie("username", user, 30);
       }
    }
}

</script>
</head>
<body onload="checkCookie()">
</body>
</html>