我正在使用var url = location.pathname.split("/")
部分拆分网址。
结果的第一个和最后一个元素始终为空。谁能解释为什么会这样?
谢谢你。
因为路径以 / 开头,并且在此之前有一个空字符串。如果路径也以 / 结尾,后面还会有另一个空字符串。
这与 jQuery 无关,它是纯 JavaScript 行为。如果你想摆脱,你可以删除 location.pathname 开头/结尾的 '/' 字符,或者只是忽略数组中的空字符串。
如果您的测试打印您的路径名,这可能会很清楚。它通常以“/”开头。如果最后一个'/'之后没有任何内容,那么你会得到这样的结果。
好吧,考虑以下 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", ""]
如果字符串以您的拆分分隔符开头,则第一个元素为空,因为之前没有任何内容/
。与字符串中的最后一个相同/
- 如果后面没有任何内容,它会在结果数组中为您提供空元素。
例子:
'/foo/bar/'.split('/') // ["", "foo", "bar", ""]
'foo/bar/'.split('/') // ["foo", "bar", ""]
'foo/bar'.split('/') // ["foo", "bar"]
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/”。用“/”分割,将返回用“/”分隔的字符串。在第一个和最后一个标记之前没有任何内容,因此您将获得第一个和最后一个标记的空字符串。