2012-05-17 10 views
0
if(varName1 <= 1 && varName1 > 0) 
{ 
$('#id1').addClass('ClassName'); 
} 

if(varName2 <= 2 && varName2 > 1) 
{ 
$('#id1').addClass('ClassName'); 
$('#id2').addClass('ClassName'); 
} 


if(varName3 <= 3 && varName2 > 2) 
{ 
$('#id1').addClass('ClassName'); 
$('#id2').addClass('ClassName'); 
$('#id3').addClass('ClassName'); 
} 

그래서 기본적으로 적은 if 문 (동일한 패턴의 총 8 개)으로이를 수행하는 더 좋은 방법이 있는지 궁금합니다.if 문을 최적화하거나 if 문을 적게 만드는 방법은 무엇입니까?

+3

'varName1'? 'varName2'? 'id3'? 'id1'? 'ClassName'? *** ARGH! *** –

+0

'varName2'보다는 세번째 if-clause에서'varName3'을 의미했을지도 모릅니다. –

+0

이 혼란스럽고 혼란스러운 예보다는 진지한 예를 들어주세요. 이것은 시스템의 나머지 부분에서 좋지 않은 디자인의 징표가 될 수 있습니다. –

답변

3
for (x = 1; x <= 3; x++) { 
    if(varName[x] <= x && varName[x] > (x-1)) { 
     $('#id[x]').addClass('ClassName'); 
    } 
} 
+0

이것이 내가 원하는 것입니다. – Rayshawn

+0

이것은'varName *'을 배열로 바꾸는 것에 달려 있다는 것에주의해야합니다; 또한 당신의'#id [x] '는''#'+ id [x]'또는''#id '+ x' (숫자 ID, 일반적으로 나쁜 생각)이어야한다고 생각합니다. 낮은 ID를 추가하는 것은 어떻습니까? 그의 코드는 varName3이 적합한 경우 클래스를 # id1 및 # id2에 추가합니다. –

+1

이 코드는 모든 후속 ID에 클래스가 있어야하기 때문에 작동합니다. – Rayshawn

2

은 하나 개의 문장

if(varName1 <= 1 && varName1 > 0) 
{ 
    $('#id1').addClass('ClassName'); 
} 
if(varName2 <= 2 && varName2 > 1) 
{ 
    $('#id1,#id2').addClass('ClassName'); 
} 
if(varName3 <= 3 && varName2 > 2) 
{ 
    $('#id1,#id2,#id3').addClass('ClassName'); 
} 
+0

'else if'사례가 아닙니다. 'if'가 맞습니다. –

+0

@ChrisMorgan : 코드 가독성을 높이기 위해 Else가 추가되었습니다. – Shyju

+0

그러나 코드의 의미가 변경됩니다. –

0

대체에 선택기를 결합하고 작업을 달성하는 방법의 가장 당신과 IF-다른-경우 스위치 문을 대체하는 것입니다. 이 감소 될 코드 크기를 제외하고 큰 차이를 만들하지 않습니다하지만 당신은 또한 원을 사용할 수 있습니다

스위치 (VAR) { 경우 1 :. $ ('#의 ID1') addClass ('클래스 이름'); 휴식;

case 2: 
    $('#id1,#id2').addClass('ClassName'); 
    break; 

case 3: 
     $('#id1,#id2,#id3').addClass('ClassName'); 
     break; 

default: 
    break; 

} 스위치의 경우

주 당신은 당신이 break 문을 생략해야하는 모든 사용 사례를 실행합니다. 여기이 코드 스 니펫은 특정 유스 케이스 만 실행하고 일치하지 않는 케이스를 발견하면 루프에서 빠져 나옵니다.

0
var i = 0, $id; 
while(i <= 3) { 
    if(eval("varName" + i) <= i && eval("varName" + i) > (i - 1)) { 
     $id = $("#id" + i).addClass("className"); 
    } 
} 

//But I recommend something like below (if that is your purpose): 
$("div").each(function(_i, _self) { 
    var $self = $(_self); 
    if($self.hasClass("className")) { 
     $self.addClass("className"); 
    } 
}); 
관련 문제