Javascript错误-Can't未定义时运行.split
Javascript error - Can't run .split on undefined
我想这真的很简单,但我似乎无法实现。我有这个片段。。。
var choice = location.href.split("?")[1].split("=")[1];
它工作正常,直到"choice"为空,然后抛出以下错误。。。。
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];
}
}
如果您发现自己经常执行这种类型的查询字符串操作,那么您可能需要投资一个可重用的函数,比如这个问题中的函数。
相关文章:
- 谷歌地图:函数返回未定义的值在console.log中运行良好
- 变量在运行时未定义,但在使用调试器时定义
- Javascript - 加载函数运行时未定义的变量
- Microsoft JScript运行时错误:无法获取属性'的值;样式':对象为null或未定义
- Microsoft JScript运行时错误:'Sys'未定义(在mvc3 c#剃刀中)
- Javascript'元素'在ie中未定义,但在chrome和firefox中运行良好
- 运行此程序后出现错误,未捕获的类型错误:无法读取未定义的属性“推送”
- 在CoffeeScript文件上运行Jasmine测试时,对象未定义错误
- Meteor with Parse - 在 Android 设备上运行 - 未定义 Parse
- 未定义再生器运行时
- Javascript 运行时错误:“应用程序未定义”
- 什么更快?运行空函数或检查函数是否未定义
- Javascript值未定义,函数在赋值后运行
- JavaScript运行时错误,未定义jQuery
- 对象在循环中运行时未定义,但在按顺序执行时未定义
- 脚本似乎在加载jQuery之前运行-未定义Uncaught ReferenceError:$
- 如何解决Microsoft JScript运行时错误:'$'未定义
- Traceur运行时:超级表达式必须为null或函数,而不是未定义的
- 0x800a138f-JavaScript运行时错误:无法获取属性'fn'的未定义引用或null引用
- IE7 javascript错误:未定义运行时错误microsoft jscript:dropdownlist