2013-12-11 2 views
2

나는 div를 통해 실행되는 함수를 가지고 있으며 각 div 안에는 자식의 수를 계산합니다. 그런 다음 어린이의 양 (var 길이)을 기준으로하면됩니다.그렇지 않으면 작동하지 않는 경우

$('.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 if 문이 작동하지 않습니다. 길이가 인 경우에도 콘솔 로그에서 확인했습니다.

누구든지 내가 뭘 잘못하고 있는지 알아? 2 다음

+2

첫 번째 조건은 두 번째 조건에서 항상 true이므로 첫 번째 조건은 항상 두 번째 조건에 해당하므로 항상 if 부분에 있고 다른 부분은 그렇지 않습니다. –

+1

나는이 질문에 대해 투표를해야한다고 생각하지 않는다. 그는 아이디어를 내고, 목표를 달성하기 위해 합리적인 시도를했으며, 문제가 있지만 단순한 문제 임에도 불구하고 여기에 올랐지 만, 이는 유효한 질문입니다. – TheCarver

+0

Thanks @PaparazzoKid –

답변

5

Length보다 항상 5 그래서 항상 첫번째 if 문 블록에 갈 것이다 다음 큰 입니다. else 부분을 실행할 수 있도록 먼저 if에서 조건을 변경하십시오.

+0

와우는 빨랐습니다. 그것은 일했는데, 고마워! 9 분 안에 답을 수락하겠습니다. lol –

+0

@ RuudSchroën – Adil

3

예. 첫 번째 if (길이> = 2)는 두 번째 else도 포함합니다.

즉, 첫 번째 조건이 충족되면 두 번째 조건도 충족되므로 흐름이 두 번째 블록에 도달하지 않습니다.

당신은 (내가, 그것을 이해하기 쉽게 생각하는) 다음의 코드를 변경할 수 있습니다

: 당신이 원하는 경우 다른이를 방지하기 때문에

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

이 모두 IFS, 당신은 단지 다른 제거 작업을 실행될 두 번째 :

관련 문제