为什么我的 javascript else 语句停止工作
Why does my javascript else statement stop working
第一个 if-else 语句按预期工作,当地址栏变量存在时,它会执行 if 部分,当不存在时,它会执行 else 部分......但是,在将所有内容拆分的VAR行之后,我输入的所有其他语句都不起作用
var hasVars = 0;
var loc = window.location.href;
if(loc.indexOf('?')>-1) { hasVars = 1; }
if(hasVars==1) { alert("ttt"); }
else { alert("eee"); }
var query = loc.slice(loc.indexOf('?') + 1);
var vars = query.split('&');
var pair = vars[0].split('=');
var data1 = pair[1].split('.');
if(hasVars==1) { alert("ttt"); }
else { alert("eee"); }
我注释掉了每一行并将它们放回原处,问题似乎出在 data1 变量行上,注释掉它工作正常,但有了它,else 语句无法运行
代码的var query (...)
部分仅在存在查询参数时才有效。所以当没有问题时,它就有问题。一种解决方案是在那里也放置一个if
。
var hasVars = 0;
var loc = window.location.href;
if(loc.indexOf('?')>-1) { hasVars = 1; }
if(hasVars==1) { alert("ttt"); }
else { alert("eee"); }
if (hasVars==1) { // added this
var query = loc.slice(loc.indexOf('?') + 1);
var vars = query.split('&');
var pair = vars[0].split('=');
var data1 = null;
if (pair[1] != undefined) { // added this for: "page?var" cases
data1 = pair[1].split('.');
} // added
} // added
if(hasVars==1) { alert("ttt"); }
else { alert("eee"); }
您遇到的问题,详细:
如果没有查询参数,query
只是 URL。让我一步一步地解释。示例页面:http://example.com/page
query -> 'http://example.com/page'
vars -> ['http://example.com/page']
pair -> ['http://example.com/page']
问题出在:
var data1 = pair[1].split('.');
因为pair
pair[1]
中没有项目。上面的代码将与 undefined.split('.')
相同,这会导致运行时错误,从而阻止以下行(如果您要求,则为第二行(执行。
你到底是什么意思,这个陈述不起作用?两个警报都没有触发?
我猜pair[1]
不存在并导致异常; 你能发布一个示例query
吗?
第二个警报未触发的原因是query
在hasVars !== 1
时undefined
。这会导致query
undefined
,这意味着它不是string
并且没有字符串方法(如split
(。尝试在非字符串对象上使用字符串方法会引发错误,从而阻止其余代码运行。
要解决此问题,请将query
(以及其余字符串(定义为:
var query = hasVars ? loc.slice(loc.indexOf('?') + 1) : '';
var vars = hasVars ? query.split('&') : '';
var pair = hasVars ? vars[0].split('=') : '';
var data1 = hasVars ? pair[1].split('.') : '';
这使用三元运算符 (?:
( 将query
初始化为空字符串(如果未1
hasVars
(。
由于query
(以及其余字符串(现在以某种方式定义为string
,因此不会引发任何错误。
- jQuery UI自动完成突然停止工作
- JavaScript打印功能使日历停止工作
- 下拉列表在使用z索引放置在前面后停止工作
- 由于响应中不存在“Access Control Allow Origin”标头,跨域请求停止工作
- 注入工厂时,Angular停止工作
- React Native DeviceEventEmitter键盘WillShow停止工作
- JavaScript在更改css时停止工作
- Chrome地理定位在更新后停止工作
- 重新启动jquery脚本后,角度停止工作
- twitter引导崩溃在第一次点击后停止工作
- 更新Wordpress和我的平滑滚动停止工作
- Hammer.js过了一段时间就停止工作了
- 应用程序在“关闭”之后停止工作(控制台中没有错误);咕哝的构造”;
- 当我添加JavaScript时,链接按钮停止工作
- 为什么我的 javascript else 语句停止工作
- jQuery 在使用 Document Ready 语句时停止工作
- 我怎么能停止我的代码在小节和我的if和else语句不工作
- 为什么我的jQuery自动刷新停止工作,如果我添加一个if语句
- 添加if-else语句会导致JavaScript停止工作
- Javascript条件语句会导致其他函数停止工作