我是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”这一链接时,没有任何反应。
有人可以开导我吗?
答案 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>