如果在javascript else语句不能正常工作
正如你可以从这个代码中看到:如果在javascript else语句不能正常工作
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 = '';
}
}
}
出于某种原因,如果else语句无法正常工作,因为你可以看到答案值是奥罗和它应该停止在第一个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')
?
我需要检查字符串是否包含'oro'。谢谢 – Laziale 2014-08-28 17:45:47
indexOf正在返回0,并且0是一个虚假值,所以它没有进入条件。应该是:
.indexOf('oro') > -1
同样的,其他条件
您正在使用的indexOf找到“奥罗”在字符串中的存在。但是,IndexOf会正确返回值0,这在JavaScript中等于false。我个人会使用answer.indexOf('oro') !== -1
。
我们从截图看不到,添加代码。 – Mritunjay 2014-08-28 17:22:18
请将您的代码作为文本发布,而不是图像。 – 2014-08-28 17:23:15