2012-03-23 54 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]); 
}