2016-07-03 3 views
0

이것이 잠재적으로 일반적인 질문이지만 논리와 코드는 정확하지만 브라우저가 충돌 할 때까지 계속 반복되는 것으로 보입니다.JavaScript Do/While 루프 무한 루프 루핑

$("#orderview").click(function(){ 
    do { 
     $(".row1").clone().appendTo(".cardbox"); 
     var i = $("listrow").length; 
     } 
    while (i < 10); 
}); 

내 함수는 10 개가 될 때까지 Listrow 클래스 DIV를 만듭니다. 내 HTML은 1 DIV로 시작합니다.

<div class="listrow news" id="row-a"> 
    <div class="l-padding floatleft"> 
     <div id="redditThumbnail"></div> 
     <div class="articleheader news"> 
      <p class="mediatitle alignleft" id="redditTitle"> 
      </p> 
      <p class="mediumtext floatleft alignleft"> 
       Submitted by 
      </p> 
      <div id="redditUsername"></div> 
      <div class="half floatright"> 
       <p class="mediatext floatright s-color bold h-s-margin"> 
        TEST 
       </p> 
       <p class="mediatext floatright p-color bold"> 
        ACTION 
       </p> 
      </div> 
     </div> 
    </div> 
</div> 

내 시도 JS 뒤에 논리였다

  1. 복제 첫 DIV "Listrow"클래스 div를가 존재 얼마나 많은
  2. 확인
  3. < 10 Listrow DIV의 다음 다시 시작이있는 경우 루프와 클론 다른

나는 뭔가를 놓친가요? 도움에 미리 감사드립니다.

+2

I 클래스'row1'와 사업부가 표시되지 않습니다 당신은'listrow' 길이의'.'를 잊어 버렸습니다. 나는 또한 그것이 당신이 생각하는대로 작동한다고 생각하지 않습니다. 왜 그냥 for 루프를 사용하고 끝내지 않을까요? – ElefantPhace

+0

코드에서 사용중인 일부 내용이 html 코드에서 누락되었습니다.이 줄로 인해 무한 루프가 발생합니다. var i = $ ("listrow"). length ;. 당신은 존재하지 않는 요소 (listrow)를 선택하고 있습니다. 0 – WinterCore

+0

안녕하세요, 잘못된 DIV를 복사했습니다. 올바른 "row1"클래스가있는 다른 div가 있습니다. 그건 좋은 지적이야. 따라서 루프를 10 번 사용하는 것이 좋습니다. 나는 솔직히 그 생각을 hadnt. – dwashburn

답변

3

변화 :

var i = $("listrow").length; 

로는 :

var i = $(".listrow").length; 
+0

$ ('# orderview. listrow')는 전체 Dom을 검색하는 것보다 훨씬 효율적이어야합니다. –