2016-01-12 4 views
-1

Я застрял в небольшой проблеме, здесь у меня более 10 строк таблицы, но мой код выполняется только один раз. Вот мой код. Пожалуйста, помогите мне в этомДля цикла, выполняющегося только один раз

var rowlength = $("#totalLostProductGrid tbody tr ").length; 

for(var i=1;i<=rowlength;i++){ 


    var startDateVal = $("#lpostartDate_"+i).val().split(/-|\s|:/); 
    var endDateVal= $("#lpoendDate_"+i).val().split(/-|\s|:/); 
    var lostProductValue = $("#lostProductionStartToEnd_"+i).val(); 
    var realEndDateVal = $("#eEndTime").val().split(/-|\s|:/); 

    var FLNominalvalue = $("#idNominalPower").text(); 
    var idEstimatedLostProdVal = $("#idEstimatedLostProd").val(); 


    var durationTime = ((new Date(endDateVal[2],endDateVal[1],endDateVal[0],endDateVal[3],endDateVal[4],endDateVal[5])) -(new Date(startDateVal[2],startDateVal[1],startDateVal[0],startDateVal[3],startDateVal[4],startDateVal[5])))/1000/60/60; 

    var actualVal = durationTime * lostProductValue; 

    alert(actualVal); 

    if(actualVal < FLNominalvalue){ 
     alert("success"); 
     return false; 
    }else{ 
     alert("invalid case"); 
     return false; 
     } 

} 

ответ

2

В конце цикла вы возвращаетесь из него, по сути, выходите из него.

Кроме того, вы уверены, что собираетесь начать с индекса 1 вместо 0? (Вар я = 0)

+0

Вероятно, у него есть lpostartDate_1 в качестве первого поля – mplungjan

3

Вы должны не возвращение ложным если нормально

$("#totalLostProductGrid tbody tr").each(function(i) { 
    i++; // assuming your fields start at 1 
    var startDateVal = $("#lpostartDate_"+i).val().split(/-|\s|:/), 
     endDateVal= $("#lpoendDate_"+i).val().split(/-|\s|:/), 
     lostProductValue = $("#lostProductionStartToEnd_"+i).val(), 
     realEndDateVal = $("#eEndTime").val().split(/-|\s|:/), 
     FLNominalvalue = $("#idNominalPower").text(), 
     idEstimatedLostProdVal = $("#idEstimatedLostProd").val(), 
     durationTime = ((new Date(endDateVal[2],endDateVal[1],endDateVal[0],endDateVal[3],endDateVal[4],endDateVal[5])) -(new Date(startDateVal[2],startDateVal[1],startDateVal[0],startDateVal[3],startDateVal[4],startDateVal[5])))/1000/60/60; 

    var actualVal = durationTime * lostProductValue; 

    console.log(actualVal); 

    if(actualVal < FLNominalvalue){ 
    console.log(i+":success"); 
    }else{ 
    alert("row #"+i+" contains an invalid case"); 
    return false; 
    } 
}); 

или возвращать только ложь, если не ок:

$("#totalLostProductGrid tbody tr").each(function(i) { 
    i++; // assuming your fields start at 1 
    var startDateVal = $("#lpostartDate_"+i).val().split(/-|\s|:/), 
     endDateVal= $("#lpoendDate_"+i).val().split(/-|\s|:/), 
     lostProductValue = $("#lostProductionStartToEnd_"+i).val(), 
     realEndDateVal = $("#eEndTime").val().split(/-|\s|:/), 
     FLNominalvalue = $("#idNominalPower").text(), 
     idEstimatedLostProdVal = $("#idEstimatedLostProd").val(), 
     durationTime = ((new Date(endDateVal[2],endDateVal[1],endDateVal[0],endDateVal[3],endDateVal[4],endDateVal[5])) -(new Date(startDateVal[2],startDateVal[1],startDateVal[0],startDateVal[3],startDateVal[4],startDateVal[5])))/1000/60/60; 

    var actualVal = durationTime * lostProductValue; 
    if(actualVal >= FLNominalvalue){ 
    alert("row #"+i+" contains an invalid case"); 
    return false; 
    } 
}); 
+0

На самом деле, это предлог ... Так что вы можете вернуться. – wizzwizz4

+0

См. Обновление. Я имел в виду «не возвращать false», если ok – mplungjan

+0

Я имею в виду, что вы специально не возвращаете true. Вы можете вернуть true из функций, как это сделал OP. – wizzwizz4

0
if(actualVal < FLNominalvalue){ 
     alert("success"); 
     return false; 
    }else{ 
     alert("invalid case"); 
     return false; 
     } 

это означает, что вне зависимости от результата это вернет false, что закончится foreach

+0

Да, мы уже определили это, так что это не ответ – mplungjan

+0

Возможно, есть ошибка, например, var undefined в вашем скрипте –

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