2013-08-14 3 views
2

Я пишу некоторые JS кода в цикле через HTML документ и мой цикл только остановка после 0 [который является началом цикла]Мой js для остановки цикла после 0?

for (i=0;i<10;i++) { 
    if (jsBox >= 0) { 
     for (i=jsBox;i<documentContent.length;i++) { 
      if (documentContent[i] == '[') { 
       startJs = i; 
       console.log(startJs); 
       break; 
      } 
     }; 
    } else { 
     console.log('Note: no js container found'); 
    } 

    //find end of css 
    for (i=startJs;i<documentContent.length;i++) { 
     if (documentContent[i] == ']') { 
      endJs = i; 
      console.log(endJs); 
      break; 
     } 
    } 
} 

Это что-то делать с кодом внутри кода? Делает ли break; заявление во внутреннем цикле также нарушает внешний цикл, если да, то как я могу выйти из одного цикла? -Скорость

+0

хорошо, значение jsBox> = 0? – Krishna

ответ

1

Это как-то связанное с кодом внутри кода?

Да.

ли break; утверждение во внутреннем цикле также разорвать внешний контур

No. Но внутренний цикл делает изменения счетчика переменной внешнего цикла. Вы должны использовать другое имя переменной, а также local variables:

// assuming already declared: jsBox, documentContent, startJs, endJs 
for (var i=0;i<10;i++) { 
    if (jsBox >= 0) { 
     for (var j=jsBox; j<documentContent.length; j++) { 
      if (documentContent[j] == '[') { 
       startJs = j; 
       console.log(startJs); 
       break; 
      } 
     } 
    } else { 
     console.log('Note: no js container found'); 
    } 

    //find end of css 
    for (var j=startJs; j<documentContent.length; j++) { 
     if (documentContent[j] == ']') { 
      endJs = j; 
      console.log(endJs); 
      break; 
     } 
    } 
} 

Btw, старше IE не поддерживает кронштейн обозначения для доступа символов на струнах. И вы были бы гораздо лучше использовать простой indexOf String method чем те петли:

var startJs = documentContent.indexOf('[', jsBox), 
    endJs = documentContent.indexof(']', startJs); 
+0

Спасибо, что делает второй параметр для jsBox 'indexOf ('[', jsBox)?' – Pixeladed

+0

И как вы можете получить позицию '' ['', если вы используете indexOf? – Pixeladed

+0

Прочтите документы, с которыми я связан! Второй аргумент позволяет указать начало (если вы не хотите искать с начала), а найденная позиция - это возвращаемое значение – Bergi

1

Вы используете неправильное повторное использование переменной здесь. Вы повторно используете i как в внутренних циклах, так и при его увеличении до documentContent.length (что, вероятно, больше 10). Затем оператор цикла outter будет найден ложным (значение i изменился во внутренних циклах), и вы выйдете из него. Я предлагаю вам использовать разные переменные во внутренних циклах, так что у вас нет затронутого петли Outter. (Хотя последний внутренний цикл устанавливает последнее значение i перед тем, как заявка на выезд проверит здесь, это неправильно использовать их в любом из этих циклов и должен быть изменен в и из них).

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