2012-03-26 42 views
0

此函数创建&存储cookie,并在此处将访问者的名称存储在cookie变量中。按照source这个JavaScript三元运算符中发生了什么?

函数的参数,直到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); 
    } 
    } 
} 

我明白任何建议或咨询。

+1

这是一个三元运算符:'(test)?真实部分:虚假部分“。如果'test'的计算结果为true,则表达式返回“真实部分”,否则返回“假部分”。 – 2012-03-26 14:01:58

+0

通常会传递什么参数?你能告诉我们调用代码吗? – 2012-03-26 14:02:45

+1

@Cory线包裹 - 它的罚款和有效 – ManseUK 2012-03-26 14:03:26

回答

4

线缠绕,这里是全行:

var c_value=escape(value) + ((exdays==null) ? "" : ";expires="+exdate.toUTCString()); 

这意味着如果exdays参数未specifed(exdays==null),然后添加空白("")其他添加";expires="加上日期(exdate)作为一个字符串使用toUTCString()

要了解更多关于cookie use Mozilla MDN而不是w3schools。这种if声明是conditional operator

+0

哦!越线!这很棘手,非常感谢你Manse! – Coffee 2012-03-26 14:07:03

1

三元组的虚假部分在最后有一个换行符。我想应该是这样的:而不是

var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString()); 

var c_value=escape(value) + ((exdays==null) ? "" : "; 
    expires="+exdate.toUTCString()); 
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为空(双等于所以它被强制这基本上意味着,这意味着未定义,空字符串或整数0也失败),那么到期字符串将不会被连接。如果提供了到期日期,它会将";expires="+exdate.toUTCString()附加到cookie字符串。

+0

非常感谢你Babey!也为双等于信息呢! – Coffee 2012-03-26 15:16:15

2

应该是这样的吗?

var c_value=escape(value) + (exdays==null) ? "True Part" : "False Part"; 
+0

只需键入这两行并提交答案即可快速回复...无论如何,希望您找到解决方案:) – 2012-03-26 14:16:55