Javascript `否则,如果`从未执行;仅执行前面的'if'
我有一个函数,它运行在一些Javascript `否则,如果`从未执行;仅执行前面的'if',javascript,if-statement,Javascript,If Statement,我有一个函数,它运行在一些中,在每个中,它计算孩子的数量。然后,根据子项的数量(var length),它会做一些事情 $('.member-type')。每个(函数(){ 变量长度=$(this).children('.views行').length; 如果(长度>=2){ console.log('等于或多于两个'); } 否则,如果(长度>5){ console.log(“超过五个”); } 否则{ console.log('singleitem'); } }); 第一个if语句有效,而
中,在每个
中,它计算孩子的数量。然后,根据子项的数量(var length
),它会做一些事情
$('.member-type')。每个(函数(){
变量长度=$(this).children('.views行').length;
如果(长度>=2){
console.log('等于或多于两个');
}
否则,如果(长度>5){
console.log(“超过五个”);
}
否则{
console.log('singleitem');
}
});
第一个if
语句有效,而else
语句有效。但是由于某种原因,else if
语句不起作用,即使长度
高于5
(我在控制台日志中检查过)
有人知道我做错了什么吗?当
长度大于2
时,它总是大于5
,因此如果语句块中出现,它总是会出现在第一个语句块中。更改第一个if
中的条件,以便可以执行else
部分:
$('.member-type').each(function() {
var length = $(this).children('.views-row').length;
if (length >= 2){
console.log('equal to or more than two');
}
if (length > 5){
console.log('more than five');
}
else{
console.log('single item');
}
});
if(长度>=2和长度5){
console.log(“超过五个”);
}
否则{
console.log('singleitem');
}
是。第一个if(长度>=2)还包括第二个else if(长度>5)
换句话说,如果第一个条件满足,第二个条件也满足,那么流将永远不会到达第二个块
您可以更改以下代码(我相信这更容易理解):
如果希望两个If都工作,只需删除else,因为else阻止执行第二个If:
$('.member-type').each(function() {
var length = $(this).children('.views-row').length;
if (length >= 2){
console.log('equal to or more than two');
}
if (length > 5){
console.log('more than five');
}
else{
console.log('single item');
}
});
你的第一个条件对于第二个条件总是正确的,所以它总是出现在if部分,而不是else if部分。我认为这个问题不应该被否决。他提出了一个想法,他为实现他的目标做出了合理的尝试,他带着一个问题来到这里,尽管这个问题很简单,但这是一个有效的问题。