2013-11-21 7 views
2

JavaScript를 사용하여 for 루프의 기본 전제를 ​​이해하지만 .each을 사용하면 나를 피할 수 있습니다.For 루프가 예상대로 작동하지 않습니다 (jQuery 사용)

var col = [1, 2, 3, 4, 5, 6]; 

for (var i = 0; i < col.length; i++) { 
    $('p').html(col[i]); 
} 

대량으로 계속 만들어 낸다 어느 :

<p> 6 </p> 
<p> 6 </p> 
<p> 6 </p> 

내가 기대 될 때 :

<p> 1 </p> 
<p> 2 </p> 
<p> 3 </p> 

왜이 예상대로 작동, 어떻게 순수한보다는, jQuery를 함께 할 수 없습니다 자바 스크립트?

http://jsfiddle.net/rgD92/2/

+4

모든 P 요소에 마지막 값에 영향을 미치는 일종의 중첩 루프가 있습니다.'$ ('p')'모든 P 요소를 대상으로하므로 각 루프 반복마다이 모든 요소에 대한 값을 업데이트하고 있습니다. –

+0

Aah okay. 루프 내에서 중첩 루프 루프를 어떻게 의미합니까? –

답변

2

See the code below을 :

var col = [1, 2, 3, 4, 5, 6]; 
$('p').each(function(index){ 
    $(this).text(col[index]); 
}); 

코드가 작동하지 않는 이유는 무엇입니까?

루프 내에서 "col"목록을 반복 할 때 모든 참조 <p> 요소를 취했습니다. 마지막 상호 작용이 발생하면 숫자는 모두 <p> 요소에 설정됩니다.

업데이트 :

var col = [1, 2, 3, 4, 5, 6]; 

$('p').each(function(index){ 
    $(this).text(col[index % col.length]); 
}); 

Demo

난이 도움이되기를 바랍니다 : 당신이 col 목록의 숫자보다 더 많은 <p> 요소가있는 경우

, 당신은 아래의 코드처럼 % 연산자를 사용할 수 있습니다 .

+1

정말 대단합니다. 정말로 도움이되었습니다. 또한 col 배열이 떨어지면 루프를 다시 시작하는 방법은 무엇입니까? 모든 'p'태그를 통하지 않고 모든 숫자를 반복합니다. 모듈 연산자 % 연산자가 필요합니까? –

+1

@tmyie 답변을 업데이트했습니다. 기본적으로 % 연산자를 사용하도록 인덱스를 변경했습니다. 나는 그것이 당신이 찾고있는 것이라고 생각합니다. – danilodeveloper

+1

그것은 완벽합니다. 그러나 나는 그 논리를 이해하지 못합니다. –

2

당신은 모든 반복에 문서의 모든 p 요소를 업데이트,도 업데이트 할 p 선택해야합니다.

.eq()을 사용하여 p 요소를 순차적으로 선택할 수 있습니다.

for (var i = 0; i < col.length; i++) { 
    $('p').eq(i).html(col[i]); 
} 

데모 : Fiddle

0

귀하의 $('p') 선택은 '페이지에서의 당신의 루프는 모든 p 업데이트'의 모든 p를 선택 너무들.

var col = [1, 2, 3, 4, 5, 6]; 

for (var i = 0; i < col.length; i++) { 
    $('p:eq(' + i + ')').html(col[i]); 
} 

JSFiddle

2

당신은 간단하게 할 수있는 :

$('p').text(function(i){ 
    return col[i]; 
}); 

JS Fiddle demo합니다.

이렇게하면 명시 적 for 루프를 사용하는 대신 jQuery가 컬렉션 자체를 반복 할 수 있습니다. 다른 대답에 귀하의 코멘트에서 알 수 있듯이

이 경우 루프에 col 텍스트/내용을 원하는 배열은 p 요소의 수보다 짧아야한다 :

$('p').text(function(i){ 
    return col[i % col.length]; 
}); 

JS Fiddle demo.

참고 :

1

jQueryeach()를 사용하여, 당신은 할 수 :

var col = [1, 2, 3, 4, 5, 6]; 
$("p").each(function(i) { 
    $(this).html(col[i]); 
}); 
관련 문제