2012-03-23 14 views
0

私のサイトで発生するjavascriptエラーがありますが、私はなぜそれを知っていますか、私はそれを修正する方法はわかりません!Javascript - ヌルのメソッド 'split'を呼び出すことができません

Uncaught TypeError: Cannot call method 'split' of null 

はここに私のJSコードです:私はちょうど "ログイン" クッキーに格納されているユーザー名を表示しようとしている

$(function(e) { 
    if (document.cookie.indexOf("login") >= 0) { 
     $("a#loggedInUser").html($.cookie("login").split("|")[0]); 
    } 
}); 

はここでエラーです。さて、返される値が文字列ではないので、splitメソッドがないので、このエラーが発生するため、エラーが発生しています。

どうすれば修正できますか?何か案は?

ありがとうございます!

+0

注:javascript!= jquery。タグが固定されました。 –

答えて

5

値がnullの場合、これをデフォルトに設定することができます。

var login = $.cookie("login") || ""; 
$("a#loggedInUser").html(login); 

さらに、document.cookie.indexOfというものは必要ありません。

+0

""デフォルト値でsplitメソッドを呼び出すと、同じエラーは発生しません。 – Lelly

+0

'" "'はStringオブジェクトであるため、 'split'メソッドがあります。 .split( "|") '=>' [''] '' "" .split( "|")[0] '=>' '' '(空文字列) –

+0

オープンしようWebコンソールまたはFirebugコンソールを起動し、これらを実行してください。彼らがうまくいくかどうかを知る最も簡単な方法です! –

2

$.cookie("login")が有効な文字列を返さない場合が考えられます。問題は可能性があるということです:document.cookie.indexOf("login") >= 0が真ですが、$.cookie("login")はまだnullまたはundefinedです。例:

$(function(e) { 
    var cookie = $.cookie("login"); 
    if(cookie) { 
     $("a#loggedInUser").html(cookie.split("|")[0]); 
    } 
}); 
0

クッキーの長さを確認してください。このようにして、一度に2つのことを検証します。

if (document.cookie.indexOf("login") >= 0 && $.cookie("login").length) { 
    $("a#loggedInUser").html($.cookie("login").split("|")[0]); 
} 
関連する問題