循环只运行一次

For loop running only once

本文关键字:一次 运行 循环      更新时间:2023-09-26

我遇到了一个小问题,这里有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;
        }
}

如果正常,则不需要返回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;
  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;
  }
});

在循环结束时,您将从它返回,实际上是退出它。

此外,您确定要从索引1而不是0开始吗?(var i=0)

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

这意味着无论结果如何,它都将返回false,这将结束每个