我想这真的很简单,但我似乎无法实现它。我有这个片段...
var choice = location.href.split("?")[1].split("=")[1];
它工作正常,直到“选择”为空,然后它抛出以下错误....
TypeError: location.href.split(...)[1] is undefined
我知道这是因为您不能对未定义的变量调用 split,我认为我的解决方案是存储变量,然后在已满时拆分它,如果未定义则忽略它。
有人可以帮我这样做吗?
我想这真的很简单,但我似乎无法实现它。我有这个片段...
var choice = location.href.split("?")[1].split("=")[1];
它工作正常,直到“选择”为空,然后它抛出以下错误....
TypeError: location.href.split(...)[1] is undefined
我知道这是因为您不能对未定义的变量调用 split,我认为我的解决方案是存储变量,然后在已满时拆分它,如果未定义则忽略它。
有人可以帮我这样做吗?
这样做不是很酷,但如果您希望查询字符串中只有一个参数,您可以这样做:
var choice = (location.href.split("?")[1] || '').split("=")[1];
你会得到choice好像undedfined它没有在查询字符串中设置。
没有足够的信息,但是第一个拆分的 1 索引的属性 href 未定义,或者最后一个拆分的第二项未定义。
您可以将拆分分成几个语句。
var choice;
var firstSplit = location.href;
if (firstSplit) {
var secondSplit = firstSplit.split("?");
}
if (secondSplit[1]) {
choice = secondSplit[1].split("=");
}
然后,您可以使用从上次拆分返回的任何内容。
如果您尝试拆分可能有也可能没有查询字符串的 URL,您会看到此异常。您应该在尝试操作之前检查查询字符串是否存在:
var choice;
var outerSplit = window.location.href.split('?');
var innerSplit;
if (outerSplit.length > 1) {
innerSplit = outerSplit.split('=');
if (innerSplit.length > 1) {
choice = innerSplit[1];
}
}
如果您发现自己经常执行这种类型的查询字符串操作,您可能想要投资一个可重用的函数,比如这个问题中的那个。