如果javascript函数中的条件不起作用

时间:2018-01-23 03:29:53

标签: javascript jquery

我需要比较值并返回消息。但是总是返回消息。我该怎么做?

使用Javascript:

function Calculation() {
  var grid = document.getElementById("<%=gvGoodReceived.ClientID%>");
  for (var i = 0; i < grid.rows.length - 1; i++) {
    var txtcurrentrcvamount = $("input[id*=txtrcvQuantity]")

    var cell = $("#gvGoodReceived").find("tr:eq(0)").find("td:eq(2)").text();
  }
  if (txtcurrentrcvamount > cell) {
    alert("Receive quantity must be less or equal PO quantity");
    return false;
  }
  return true;
}

2 个答案:

答案 0 :(得分:3)

您需要获取输入的value

var txtcurrentrcvamount = $("input[id*=txtrcvQuantity]").val()
//                                                      ^^^^^^

由于您要比较数字,val()text()返回字符串,因此您应该在进行比较之前将值转换为数字:

if (Number(txtcurrentrcvamount) > Number(cell))

请注意Number(someStringThatIsNotANumber)将返回NaN

答案 1 :(得分:1)

因为变量 (txtcurrentrcvamount) 的范围在for循环之间受到限制,这就是为什么它不能在循环范围之外工作。

有关详细信息,您可以查看此帖子... scope of variables

if condition 中使用此变量时,您已在 for循环之前初始化它...

修改 试试这可能对你有帮助。我认为还有一些其他发现假设您的网格中有两行,那么您要检查哪一行值,因为这总是返回最后一行值 ...并且如果两个行都有一个数字值变量赋值txtcurrentrcvamount ,cell然后它应该完美地工作。

function Calculation() {
  var grid = document.getElementById("<%=gvGoodReceived.ClientID%>");
  var txtcurrentrcvamount ;
  var cell;
  for (var i = 0; i < grid.rows.length - 1; i++) {
    txtcurrentrcvamount = $("input[id*=txtrcvQuantity]").val();
    cell = $("#gvGoodReceived").find("tr:eq(0)").find("td:eq(2)").text();

  }
  if (Number(txtcurrentrcvamount) > Number(cell)) {
    alert("Receive quantity must be less or equal PO quantity");
    return false;
  }
  return true;
}