2016-01-12 192 views
-1

我困住了一個小問題,在這裏我有超過10個錶行,但我的代碼只執行一次。這是我的代碼。請幫我解決這個問題For循環只運行一次

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? (VAR I = 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; 
    } 
}); 

或僅返回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

其實,這是一個foreach ...所以你可以返回。 – wizzwizz4

+0

查看更新。我的意思是「不返回假」,如果沒問題 – mplungjan

+0

我的意思是你沒有具體回覆真實。正如OP所做的那樣,您可以從函數中返回true。 – wizzwizz4

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

這意味着無論結果是否會返回false,這將結束foreach

+0

是的,我們已經確定,所以這不是一個答案 – mplungjan

+0

也許有錯誤的東西像var undefined在腳本中 –