【问题标题】:Javascript - Cannot call method 'split' of nullJavascript - 无法调用 null 的方法“拆分”
【发布时间】:2012-03-23 17:03:20
【问题描述】:

我的网站上出现了一个 javascript 错误,我很确定我知道原因,但我不知道如何解决它!

这是错误:

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 方法,所以会导致这个错误。

我该如何解决这个问题?有任何想法吗?

谢谢!

【问题讨论】:

  • 就像一个注释:javascript != jquery.标记已修复。

标签: javascript jquery cookies split


【解决方案1】:

如果值为 null,您可以执行类似的操作来设置默认值。

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

另外,如果你这样做,你可能不需要document.cookie.indexOf 东西。

【讨论】:

  • 那么在“”默认值上调用split方法不会导致同样的错误吗?
  • "" 是一个 String 对象,因此具有 split 方法。 "".split("|") => [ '' ] "".split("|")[0] => ''(空字符串)
  • 尝试打开您的网络控制台或萤火虫控制台并自己运行它们。这是了解它们是否有效的最快方法!
【解决方案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] );
    }
});

【讨论】:

    【解决方案3】:

    检查 cookie 的长度。这样您可以同时验证两件事。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多