此功能创建&存储一个cookie,这里它将访问者的名字存储在一个cookie变量中。根据{{3}}
该函数的参数包含cookie的名称,即 cookie的值,以及cookie到期前的天数。
在函数中我们首先将天数转换为有效天数 日期,然后我们添加cookie到期之前的天数。 之后我们存储cookie名称,cookie值和到期日期 在document.cookie对象中的日期。
function setCookie(c_name,value,exdays)
{
var exdate=new Date();
exdate.setDate(exdate.getDate() + exdays);
var c_value=escape(value) +
((exdays==null) ? "" : ";expires="+exdate.toUTCString());
document.cookie=c_name + "=" + c_value;
}
我可以看到日期是如何运作的,但是这部分发生了什么:
var c_value=escape(value) + ((exdays==null) ? "" : ";
这是调用代码:
function checkCookie()
{
var username=getCookie("username");
if (username!=null && username!="")
{
alert("Welcome again " + username);
}
else
{
username=prompt("Please enter your name:","");
if (username!=null && username!="")
{
setCookie("username",username,365);
}
}
}
我感谢任何提示或建议。
答案 0 :(得分:4)
换行,这是完整的一行:
var c_value=escape(value) + ((exdays==null) ? "" : ";expires="+exdate.toUTCString());
这意味着如果未指定exdays
参数(exdays==null
),则添加空白(""
),否则添加";expires="
加上日期(exdate
)使用toUTCString()
要详细了解Cookie use Mozilla MDN而不是w3schools。这种if
语句是conditional operator
答案 1 :(得分:2)
应该是这样的吗?
var c_value=escape(value) + (exdays==null) ? "True Part" : "False Part";
答案 2 :(得分:1)
三元组的错误部分在最后有一个换行符。我想它应该是这样的:
var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
而不是:
var c_value=escape(value) + ((exdays==null) ? "" : ";
expires="+exdate.toUTCString());
答案 3 :(得分:1)
您发布的代码中似乎存在错误的换行符。
var c_value=escape(value) + ((exdays==null) ? "" : ";
expires="+exdate.toUTCString()); // this line should be up after the semicolon
然后会产生:
var c_value=escape(value) + ((exdays==null) ? "" : ";expires="+exdate.toUTCString());
这基本上意味着如果赋予函数的exdays
为null(double等于强制,这意味着未定义,空字符串或整数0也会失败)则不会连接到期字符串。如果给出了截止日期,它会将";expires="+exdate.toUTCString()
附加到cookie字符串。