2012-03-26 94 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