2015-08-13 2 views
-1

Когда vesselCount 2 код выполняется только один раз он не входит в цикл сноваFor Loop не работает должным образом Javascript

function showAllProducts(type, vesselIndex, prodCount,vesselCount) { 
    confirm (type+"==="+vesselIndex+"===="+prodCount); 

    for(i=0;i<vesselCount;i++) { 
     confirm("outerfor"+vesselCount); 
     vesselIndex=vesselIndex+i; 
    var tableId = ""; 
    if(type=="regular") { 
     tableId = "productsTable"+vesselIndex; 
     confirm ("productsTable"+vesselIndex); 
    } else { 
     tableId = "productsTableCompV"+vesselIndex; 
    } 
    var productsTable = document.getElementById(tableId); 
    var prodCount = productsTable.rows.length-1; 
    confirm("productcount"+prodCount); 
    if(prodCount>0) { 
     var expandUp = ""; 
     var expandDown = ""; 
     if(type == 'regular') { 
      expandUp = "productExpandUp"; 
      expandDown = "productExpandDown"; 
     } else { 
      expandUp = "compProductExpandUp"; 
      expandDown = "compProductExpandDown"; 
     } 

     for(i=0;i<prodCount;i++) { 
      var div1 = expandDown+vesselIndex+i; 
      var div2 = expandUp+vesselIndex+i; 
      showProductDetails(type, vesselIndex, i, div1, div2); 
      confirm("fordone"); 
     } 
     } 

    } 
} 

...

function showProductDetails(type, vesselIndex, prodIndex, div1, div2){ 
    var applContId = ""; 
    if(type == 'regular') { 
     applContId = "productApplCont"; 
    } else { 
     applContId = "compProductApplCont"; 
    } 
    document.getElementById(applContId+vesselIndex+prodIndex).style.visibility = "visible"; 
    document.getElementById(applContId+vesselIndex+prodIndex).style.display = "block"; 
    var jobType = document.getElementById("jobType").value; 
    if(jobType=='INSP' || jobType=='MAR') { 
    if(type == 'regular') { 
    document.getElementById("productQuant"+vesselIndex+prodIndex).style.visibility = "visible"; 
    document.getElementById("productQuant"+vesselIndex+prodIndex).style.display = "block"; 
    } 
    } 
    document.getElementById(div1).style.visibility = "visible"; 
    document.getElementById(div2).style.visibility = "hidden"; 
} 

ответ

4

Ваш внутренний цикл использует тот же самый переменная как ваш внешний для цикла (i). Измените его на другую переменную.

for(var j = 0; j < prodCount; j++) { }

1

Вы повторно использовать переменную i в внутренняя петля для петли внутри верхней петли

function showAllProducts(type, vesselIndex, prodCount, vesselCount) { 
    confirm(type + "===" + vesselIndex + "====" + prodCount); 

    for (i = 0; i < vesselCount; i++) { 
     if (prodCount > 0) { 
      for (i = 0; i < prodCount; i++) { // <=========== 
      } 
     } 

    } 
} 
+0

Спасибо дружище сделал трюк только изменил внутреннюю varibale петли – user2218550

0

Вы используете тот же итератор для цикла

for(i=0;i<vesselCount;i++){ 
    confirm("outerfor"+vesselCount); 
    vesselIndex=vesselIndex+i; 
    ... 
     for(i=0;i<prodCount;i++){ 
     var div1 = expandDown+vesselIndex+i; 
     var div2 = expandUp+vesselIndex+i; 
     showProductDetails(type, vesselIndex, i, div1, div2); 
     confirm("fordone"); 
    } 
    ... 
} 

Пожалуйста, измените внутренний итератор петли переменной

for(j=0;j<prodCount;j++) 
1

У вас есть 2 для петель,

строка 4 for(i=0;i<vesselCount;i++) a d line 29 for(i=0;i<vesselCount;i++) Эти две петли используют одну итеративную переменную i, i во втором цикле перезаписывают значение в первом цикле.

Выберите новую итерационные переменный во втором цикле должны исправить ошибку:

function showAllProducts(type, vesselIndex, prodCount, vesselCount) { 
    confirm(type + "===" + vesselIndex + "====" + prodCount); 

    for (var i = 0; i < vesselCount; i++) { 
     confirm("outerfor" + vesselCount); 
     vesselIndex = vesselIndex + i; 
     var tableId = ""; 
     if (type == "regular") { 
      tableId = "productsTable" + vesselIndex; 
      confirm("productsTable" + vesselIndex); 
     } else { 
      tableId = "productsTableCompV" + vesselIndex; 
     } 
     var productsTable = document.getElementById(tableId); 
     var prodCount = productsTable.rows.length - 1; 
     confirm("productcount" + prodCount); 
     if (prodCount > 0) { 
      var expandUp = ""; 
      var expandDown = ""; 
      if (type == 'regular') { 
       expandUp = "productExpandUp"; 
       expandDown = "productExpandDown"; 
      } else { 
       expandUp = "compProductExpandUp"; 
       expandDown = "compProductExpandDown"; 
      } 

      for (var j = 0; j < prodCount; j++) { 
       var div1 = expandDown + vesselIndex + j; 
       var div2 = expandUp + vesselIndex + j; 
       showProductDetails(type, vesselIndex, j, div1, div2); 
       confirm("fordone"); 
      } 
     } 

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