我有以下内容:
var detail = 'two';
function chkDetail(detail){
if(detail == 'one') {
jQuery('#valMsg').text('one');
}
if(detail == 'two') {
jQuery('#valMsg').text('two');
}
if(detail == 'three') {
jQuery('#valMsg').text('three');
}
else {
jQuery('#valMsg').text('NO');
}
}
根据传递给我的函数的字符串,我希望将相应的消息传递到我的valMsg
div。
在上面的场景中,我的函数不断返回NO
。
谁能告诉我为什么会这样?
if
语句是否不正确?
答案 0 :(得分:5)
应在所有陈述中添加else
:
function chkDetail(detail){
if(detail == 'one') {
jQuery('#valMsg').text('one');
}
else if(detail == 'two') {
jQuery('#valMsg').text('two');
}
else if(detail == 'three') {
jQuery('#valMsg').text('three');
}
else {
jQuery('#valMsg').text('NO');
}
}
答案 1 :(得分:4)
你已经分开了条件。我会添加间距来说明:
// first condition
if(detail == 'one') {
jQuery('#valMsg').text('one');
}
// second condition
if(detail == 'two') {
jQuery('#valMsg').text('two');
}
// third condition
if(detail == 'three') {
jQuery('#valMsg').text('three');
}
else {
jQuery('#valMsg').text('NO');
}
例如,如果detail
是“一个”,那么:
if
区块if
块if
块, 进入else
块(因为else
是逻辑逆if
)如果它们都应该是相同的条件,请使用else if
块:
// all one condition
if(detail == 'one') {
jQuery('#valMsg').text('one');
}
else if(detail == 'two') {
jQuery('#valMsg').text('two');
}
else if(detail == 'three') {
jQuery('#valMsg').text('three');
}
else {
jQuery('#valMsg').text('NO');
}
这样一旦输入一个区块,就会跳过其余区块,因为整个条件已经满足。
答案 2 :(得分:2)
else
仅指前一个if
,而不是所有if
语句。
答案 3 :(得分:0)
此处提供的答案不会检查数据类型,这对检查至关重要。
var int1 = 1
var string1 = '1'
if(string1 == int1)
会返回true,但它们实际上并不相同。
我会使用更好看代码的switch语句,并且还检查数据类型。
var detail = 'two';
function chkDetail(detail){
switch(detail){
case 'one' : jQuery('#valMsg').text('one'),
case 'two' : jQuery('#valMsg').text('two'),
default : jQuery('#valMsg').text('No')
}
如果你想要使用多个if语句的路由,那么请使用===
运算符来确保对数据类型进行检查。这样可以防止大量粗略的行为和错误。
if(detail === 'one') {
jQuery('#valMsg').text('one');
}
if(detail === 'two') {
jQuery('#valMsg').text('two');
}
if(detail === 'three') {
jQuery('#valMsg').text('three');
}
else {
jQuery('#valMsg').text('NO');
}
}