在以下功能中,有一行:
var username=getCookie("username");
这是整个功能:
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);
}
}
上面传递的“用户名”参数有什么意义?
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);
}
}
}
答案 0 :(得分:3)
Cookie以每个站点的名称/值对格式存储,有点像查询字符串。
因此,当您访问Cookie时,您不能只说document.cookie.username
并获取值,您实际上必须拆分分隔符。
在getCookie()代码中(效率非常低,顺便说一句),它将搜索名称,然后获取值,该值由=
分隔。
答案 1 :(得分:2)
document.cookie
包含与此页面/会话相关的所有Cookie,格式为:
"<cookie_name_1>=<cookie_value_1>; <cookie_name_2>=<cookie_value_2>; ..."
当您为"username"
函数的c_name参数传递getCookie()
时,您告诉它您感兴趣的<cookie_name>
。
每次迭代时,该功能基本上都会document.cookie
将<cookie_name>
放入x
和<cookie_value>
y
。如果当前<cookie_name>
等于"username"
(在您的示例中),那么它将返回<cookie_value>
答案 2 :(得分:1)
这是Cookie的名称,您可以在此时存储多个Cookie,并且名称对于获取所需的Cookie非常重要。