2012-03-23 56 views
0

我有一個JavaScript錯誤,發生在我的網站上,我很確定我知道爲什麼,但我不知道如何解決它!Javascript - 不能調用方法'拆分'null

這裏的錯誤:

Uncaught TypeError: Cannot call method 'split' of null 

這裏是我的JS代碼:

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

我只是想顯示存儲在 「登錄」 的cookie的用戶名。現在,我敢肯定,錯誤是因爲返回的值有時不是字符串,所以它沒有split方法,所以會導致這個錯誤。

我該如何解決這個問題?有任何想法嗎?

謝謝!

+0

就像注意:javascript!= jquery。標記固定。 – 2012-03-23 17:18:02

回答

5

那麼你可以做這樣的事情來設置一個默認值,如果該值爲空。

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

此外,如果你這樣做,你可能不需要document.cookie.indexOf的事情。

+0

然後調用「」默認值的分割方法不會導致相同的錯誤? – Lelly 2012-03-23 17:56:10

+0

'''''是一個String對象,因此具有'split'方法。 '「」.split(「|」)'=>'['']' '「」.split(「|」)[0]'=>''''(空字符串) – 2012-03-23 18:58:57

+0

嘗試開放您的Web控制檯或螢火蟲控制檯並自行運行。這是知道他們是否會工作的最快捷方式! – 2012-03-23 18:59:58

2

這可能是$.cookie("login")未返回有效字符串的情況。我認爲問題可能是:document.cookie.indexOf("login") >= 0爲真,但$.cookie("login")仍然是nullundefined。使用相同的支票例如:

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

檢查cookie的長度。這樣你一次驗證兩件事。

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