我正在开发一个需要我计算某些字段总和的应用程序。

我的输入是:

in1 = df[0][b];
in2 = df[0][c];
in3 = df[0][f];
total


如果将内容作为数组拉出,则数组之间可能会有间隙。例如:

df[1][b] = 123;
df[2][b] = empty or null;
df[3][b] = 456;
df[4][b] = 5567;


公式是:

 df[0][f] = df[0][c] / df[0][b];
 total = sum of df[0][c];


我尝试了以下代码,但工作正常,但是当我有GAPS(空,空或NaN)时,计算将停止!有任何想法吗 ?

  function updatesum()
    {
    var kon = 0;
    var lenArr = 0;
    for (i = 0; i < 1000; i++) {
    if(document.forms["sampleform"]["df["+i+"][c]"]) {lenArr++;}
    else { break; }
    }
    var total =0;
    for (j = 0; j < lenArr; j++) {
    total = total + (document.forms["sampleform"]["df["+j+"][c]"].value-0);
    document.forms["sampleform"]["df["+j+"][f]"].value = (document.forms["sampleform"]["df["+j+"][c]"].value-0) / (document.forms["sampleform"]["df["+j+"][b]"].value-0);
    }
    document.forms["sampleform"]["toplam"].value = total;
    document.forms["sampleform"]["kalantutar"].value = total - (document.forms["sampleform"]["odenentutar"].value-0);
    }


演示:http://codepen.io/mumingazi/pen/XbNvBr

最佳答案

您需要使用parseFloat或parseInt,然后在if语句中删除break
您可以这样使用

!isNAN(document.forms["sampleform"]["df["+j+"][f]"].value)? document.forms["sampleform"]["df["+j+"][f]"].value :0或检查值是否为假,然后像这样document.forms["sampleform"]["df["+j+"][f]"].value||0取0或1

这是完整的源代码

  function updatesum(){
      var kon = 0;
      var lenArr = 0;
      for (i = 0; i < 1000; i++) {
      if(document.forms["sampleform"]["df["+i+"][c]"]) {lenArr++;}
      //else { break; }
      }
      var total =0;
      for (j = 0; j < lenArr; j++) {
      total = total + (document.forms["sampleform"]["df["+j+"]      [c]"].value-0);
      document.forms["sampleform"]["df["+j+"][f]"].value =
        (document.forms["sampleform"]["df["+j+"][c]"].value||0) /
  (document.forms["sampleform"]["df["+j+"][b]"].value||1);
      }
      document.forms["sampleform"]["toplam"].value = total;
      document.forms["sampleform"]["kalantutar"].value =
        total - (document.forms["sampleform"]["odenentutar"].value||0);
      }

10-08 04:31