2015-01-22 2 views
0

Почему этот цикл никогда не заканчивается? Каждый раздел может иметь или не иметь подразделов, которые являются тем же классом, что и раздел. Заявление работает очень странно. Он постоянно возвращается к list.append('<label class="heading">' + theSection.description + '</label><br/><hr><br/>'); все время. Если нет подразделов, он не должен этого делать.Никогда не заканчивается на цикл javascript

function createAssessmentSectionFormHTML(section) { 
    var list = $('#assessmentSectionForm' + platform); 
    appendSection(section, list); 
} 

function appendSection(theSection, list) { 
    list.append('<label class="heading">' + theSection.description + '</label><br/><hr><br/>'); 
    appendSectionQuestions(theSection, list); 
    if (theSection.allSubSections) { 
     for (x = 0; x < theSection.allSubSections.length; x++) { 
      var theSectionA = theSection.allSubSections[x]; 
      appendSection(theSectionA, list); 
     } 
     return; 
    } 
} 
+0

Возможно, проблема кроется в 'appendSectionQuestions'? –

+3

[Попробуйте объявить 'x'] (http://stackoverflow.com/questions/1470488/what-is-the-function-of-the-var-keyword-and-when-to-use-it-or-omit -it), поэтому он является локальным для 'appendSection()'. В настоящее время он является глобальным, который делится между каждым вызовом 'appendSection()' и может эффективно перематывать или ускорять предыдущий раунд в зависимости от того, как сравнивается 'length'. –

+0

@JonathanLonowski Хороший звонок, это, наверное, то, что есть. –

ответ

2

Я считаю, что вам не хватает «вар» в вашем цикл:

for (var x = 0; x < theSection.allSubSections.length; x++) {

Это должно решить проблему - она ​​работает бесконечно, потому что х не объявлена. Undefined всегда меньше любой длины, поэтому нет конечной точки.

Смежные вопросы