2

我正在使用var url = location.pathname.split("/")部分拆分网址。

结果的第一个和最后一个元素始终为空。谁能解释为什么会这样?

谢谢你。

4

5 回答 5

1

因为路径以 / 开头,并且在此之前有一个空字符串。如果路径也以 / 结尾,后面还会有另一个空字符串。

这与 jQuery 无关,它是纯 JavaScript 行为。如果你想摆脱,你可以删除 location.pathname 开头/结尾的 '/' 字符,或者只是忽略数组中的空字符串。

于 2013-09-12T11:15:29.933 回答
1

如果您的测试打印您的路径名,这可能会很清楚。它通常以“/”开头。如果最后一个'/'之后没有任何内容,那么你会得到这样的结果。

于 2013-09-12T11:15:40.890 回答
1

好吧,考虑以下 url http://stackoverflow.com/questions/18762585/jquery-location-pathname-split-returning-empty-first-and-last-elements/。路径名是/questions/18762585/jquery-location-pathname-split-returning-empty-first-and-last-elements/,在第一个“/”之前和最后一个“/”之后什么都没有。

["", "questions", "18762585", 
 "jquery-location-pathname-split-returning-empty-first-and-last-elements", 
 "18762683", ""]
于 2013-09-12T11:13:13.663 回答
1

如果字符串以您的拆分分隔符开头,则第一个元素为空,因为之前没有任何内容/。与字符串中的最后一个相同/- 如果后面没有任何内容,它会在结果数组中为您提供空元素。

例子:

'/foo/bar/'.split('/')    // ["", "foo", "bar", ""]
'foo/bar/'.split('/')     // ["foo", "bar", ""]
'foo/bar'.split('/')      // ["foo", "bar"]
于 2013-09-12T11:14:43.340 回答
1

location.pathname 返回 URL 的路径名部分。换句话说,它返回没有主机且没有查询字符串的路径。

即,“ http://www.stackoverflow.com/question/1/50/hello?answers=yes ”的路径名是“/question/1/50/hello”。

因此,您可能对看起来像“ http://site.com/a/b/c/ ”的 URL 有疑问,它给出了路径名“/a/b/c/”。用“/”分割,将返回用“/”分隔的字符串。在第一个和最后一个标记之前没有任何内容,因此您将获得第一个和最后一个标记的空字符串。

于 2013-09-12T11:15:06.590 回答