JavaScript中的if-else语句工作不正常
if else statement in JavaScript not working properly
您可以从以下代码中看到:
function setBodyClasses() {
var answer = $surveyAns.getAnswer('QUEST223');
answer = 'oro';
if(!surveyUtils.isNullOrWhiteSpace(answer)) {
if (answer.toLowerCase().indexOf('oro')) {
$scope.bodyClasses = 'vip_gold';
}
else if (answer.toLowerCase().indexOf('platino')) {
$scope.bodyClasses = 'vip_platinum';
}
else {
$scope.bodyClasses = '';
}
}
}
由于某些原因,if-else语句无法正常工作,正如您所看到的,答案的值是oro,它应该在第一个if条件下停止,但当它在第一个if条件下时,它会比较该值,并在假设该值不相同的情况下向前移动,并且由于其他原因,即使该值不同,它也会进入第二个if条件。知道为什么会发生这种事吗?
您错误地检查answer
是否包含字符串。.indexOf()
会返回它在字符串中的位置。它可能是0
,也就是字符串的开头(它就像一个数组,在那里它是零索引的)。如果未找到,则返回-1
。
如果你只做if(answer.toLowerCase().indexOf('oro'))
,它将是false
,因为0
是"虚假的"。
您要执行的操作:if(answer.toLowerCase().indexOf('oro') >= 0)
。
您确定首先要使用indexOf()
吗?这是在检查字符串是否"包含"oro
。你确定你不只是需要:if(answer.toLowerCase() === 'oro')
吗?
indexOf返回0,而0是一个错误值,因此它没有进入条件。应为:
.indexOf('oro') > -1
与其他条件相同
您正在使用indexOf来查找字符串中是否存在"oro"。然而,IndexOf正确地返回值0,这在JavaScript中相当于false。我个人会使用answer.indexOf('oro') !== -1
。
相关文章:
- Javascript.getHours()工作不正常
- removeClass函数没有'工作不正常
- jQuery Ajax GET请求工作不正常
- Cordova ng路线工作不正常
- 更新属性工作不正常Meteor/MongoDB
- 为什么文本对齐:对;工作不正常
- Javascript作用域和Ajax调用;工作不正常
- JavaScript DOM insertBefore'工作不正常
- Angular Js布线工作不正常
- onmouseout函数工作不正常
- 承诺工作不正常
- JQuery.live()工作不正常
- Alloy UI文本区域工作不正常
- ng src工作不正常,但src工作正常
- Canvas.toDataUrl(“image/png”)工作不正常
- JQuery `length`属性工作不正常.为什么?
- Javascript setInterval工作不正常
- 我的Javascript代码没有'工作不正常
- 表单验证工作不正常,在不检查条目的情况下继续
- $localStorage array select with ng选项工作不正常