2012-03-26 8 views
0

この関数は、&がクッキーを格納するように作成します。ここでは、クッキー変数に訪問者の名前を格納します。クッキーの有効期限が切れるまでsourceJavaScriptの3値演算子で何が起こっていますか?

によると、関数のパラメータは、クッキーの名前、クッキーの 値、および日数を保持します。

この関数では、最初に有効日数を有効な に変換してから、クッキーが期限切れになるまでの日数を追加します。 その後、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'がtrueと評価された場合、式は「真の部分」を返し、そうでなければ「偽の部分」を返します。 –

+0

通常、どの引数が渡されますか?呼び出すコードを表示できますか?ライン@Cory –

+1

が包まれている - その罰金と有効な – ManseUK

答えて

4

ラインが包まれ、ここでのフルラインは次のとおりです。

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

exdaysパラメータが指定されていないされた場合にはこの手段(exdays==null)、その後("")空白を追加し、他の";expires="プラス日(exdate)などを追加文字列を使用してtoUTCString()

w3schoolsの代わりにuse Mozilla MDNクッキーの詳細については。この種類のifステートメントは、conditional operator

+0

ああ!改行!それは面倒だった、ありがとう、非常にマンス! – Coffee

1

最後に3桁の偽の部分に改行があります。

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 

この希望は、その後、収率:未定義手段ヌル(二重の等号は、それが強制されるように、関数に渡さexdays場合、基本的に意味

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

、空の文字列、または整数0はまた、希望失敗した場合)、満了文字列は連結されません。有効期限が与えられた場合は、";expires="+exdate.toUTCString()がクッキー文字列に追加されます。

+0

ありがとう非常に多くのBabey!また、二重の等号についても! – Coffee

2

これは次のようなものでしょうか?

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

ちょうどそれらの2つの行をタイプして答えを提出するうちに応答が速すぎる...とにかく、あなたは解決策を見つけたと思う:) –

関連する問題