2016-01-12 284 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在脚本中 –