2016-07-03 4 views
0

Я знаю, что это потенциально общий вопрос, но я считаю, что логика и код выглядят правильными, но все же кажется, что они зацикливаются до тех пор, пока браузер не завершится.JavaScript Do/While Loop Infinitely Looping

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

Моя функция создает класс класса DIV, пока их не будет 10. Мой 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
  2. Проверьте, сколько "Listrow" класса DIVs присутствуют
  3. Если затем рестарт < 10 Listrow DIV в петля и клон другой

Я что-то не хватает? Заранее спасибо за помощь.

+2

Я не вижу DIV с 'row1' класса и ваши забыли' '.' для длины listrow'. Я также не думаю, что это будет работать так, как вы думаете. Почему бы просто не использовать цикл for и не делать? – ElefantPhace

+0

В вашем html-коде отсутствует какой-то материал, который вы используете в своем коде, вы получаете бесконечный цикл из-за этой строки var i = $ ("listrow"). Length ;. вы выбираете элемент (listrow), который не существует, и его возвращение 0 – WinterCore

+0

Привет, я прошу прощения, я скопировал неправильный DIV. У меня есть еще один div с правильным классом «row1». Неплохо подмечено. Итак, вы предлагаете использовать цикл только 10 раз? Честно говоря, я об этом не думал. – dwashburn

ответ

3

изменение:

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

к:

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

$ ('# orderview .listrow') должен быть намного более эффективным, чем поиск всего Dom –