2013-12-11 119 views
2

我有一个函数,它贯穿了一些divs,并且在每个div里面它都计算了孩子的数量。然后根据孩子的数量(变量长度),它做了一些事情。否则,如果不工作

$('.member-type').each(function() { 
    var length = $(this).children('.views-row').length; 
    if (length >= 2){ 
     console.log('equal to or more than two'); 
    } 
    else if (length > 5){ 
     console.log('more than five'); 
    } 
    else{ 
     console.log('single item'); 
    } 
}); 

第一个if语句有效,else语句有效。但由于某种原因,如果else语句不起作用,即使当长度高于5(我在控制台日志中检查)。

有谁知道我在做什么错?

+2

您的第一个条件对于第二个条件总是如此,所以它总是会在if部分而不是其他部分。 –

+1

我认为这个问题不应该被降低。他提出了一个想法,他为实现目标做了合理的尝试,尽管是一个简单的问题,但他仍然带着一个问题来到这里,但这是一个有效的问题。 – TheCarver

+0

谢谢@PaparazzoKid –

回答

5

Length大于2总是大于5所以它总是在第一个if语句块。在第一个if中更改条件,以便可以执行else部分。

if (length >= 2 && length <= 5){ 
     console.log('more than two and less than five'); 
} 
else if (length > 5){ 
    console.log('more than five'); 
} 
else{ 
    console.log('single item'); 
} 
+0

哇,这很快。它的工作,非常感谢!我会在9分钟内接受你的回答.. lol –

+0

不客气@RuudSchroën – Adil

3

是的。第一个if(length> = 2)也包含第二个else if(length> 5)

换句话说,如果满足第一个条件,第二个条件也是如此,那么流将永远不会到达第二个块。

您可以更改为以下(其中,我相信,它更容易理解)代码:

if (length >5){ 
    console.log('more than five'); 
} 
else if (length > 2){ 
    console.log('more than two'); 
} 
else{ 
    console.log('single item'); 
} 
0

如果你想同时IFS的工作,你只是删除的东西了,因为其他人阻止第二个如果要执行:

$('.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'); 
    } 
}); 
相关问题