JavaScript函数中此字符串参数的用途是什么?

时间:2012-03-27 05:20:09

标签: javascript

在以下功能中,有一行:

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);
    }
  }
}

whole code is here 谢谢!

3 个答案:

答案 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非常重要。