javascript:在循环中添加浮动

javascript:在循环中添加浮动,javascript,math,floating-point,calculation,Javascript,Math,Floating Point,Calculation,我有一个过滤器函数,基于它隐藏表行。如果行未被隐藏,我想从表中添加浮点值,然后替换表下的原始总和字段。到目前为止,我得到了以下信息,但由于某种原因,它无法工作,我也不知道为什么: function filter() { var input, filter, table, tr, origresults, origsum, newresults, newsum, td, i; input = document.getElementById("input"); filter = inpu

我有一个过滤器函数,基于它隐藏表行。如果行未被隐藏,我想从表中添加
浮点值
,然后替换表下的原始总和字段。到目前为止,我得到了以下信息,但由于某种原因,它无法工作,我也不知道为什么:

function filter() {
  var input, filter, table, tr, origresults, origsum, newresults, newsum, td, i;
  input = document.getElementById("input");
  filter = input.value.toUpperCase();
  table = document.getElementById("list");
  tr = table.getElementsByTagName("tr");
  origresults = document.getElementById("results");
  origsum = document.getElementById("sum");
  newresults = 0;
  newsum = 0.0;

  for (i = 0; i < tr.length; i++) {
    td = tr[i].getElementsByTagName("td")[0];

    if (td) {
      if (td.innerHTML.toUpperCase().indexOf(filter) > -1) {
        tr[i].style.display = "";
        newresults++;
        newsum += parseFloat(td);
      } else {
        tr[i].style.display = "none";
      }
    }
  }

  origresults.innerHTML = newresults;
  origsum.innerHTML = parseFloat(newsum).toFixed(2);
}
函数过滤器(){
var输入、过滤器、表格、tr、origresults、origsum、newresults、newsum、td、i;
输入=document.getElementById(“输入”);
filter=input.value.toUpperCase();
table=document.getElementById(“列表”);
tr=table.getElementsByTagName(“tr”);
origresults=document.getElementById(“结果”);
origsum=document.getElementById(“总和”);
newresults=0;
newsum=0.0;
对于(i=0;i-1){
tr[i].style.display=“”;
newresults++;
newsum+=parseFloat(td);
}否则{
tr[i].style.display=“无”;
}
}
}
origresults.innerHTML=新结果;
origsum.innerHTML=parseFloat(newsum).toFixed(2);
}
它总是说
NaN
,但我不明白为什么


newsum=parseFloat(newsum)+parseFloat(td)
也不起作用。

我的错误是用
td
而不是
td.innerHTML
计算。因此函数返回一个
NaN
,因为
td
显然包含完整的标记,而不仅仅是它的内容

这项工作:

function filter() {
  var input, filter, table, tr, origresults, origsum, newresults, newsum, td, i;
  input = document.getElementById("input");
  filter = input.value.toUpperCase();
  table = document.getElementById("list");
  tr = table.getElementsByTagName("tr");
  origresults = document.getElementById("results");
  origsum = document.getElementById("sum");
  newresults = 0;
  newsum = 0.0;

  for (i = 0; i < tr.length; i++) {
    td = tr[i].getElementsByTagName("td")[0];

    if (td) {
      if (td.innerHTML.toUpperCase().indexOf(filter) > -1) {
        tr[i].style.display = "";
        newresults++;
        newsum += parseFloat(td.innerHTML);
      } else {
        tr[i].style.display = "none";
      }
    }
  }

  origresults.innerHTML = newresults;
  origsum.innerHTML = parseFloat(newsum).toFixed(2);
}
函数过滤器(){
var输入、过滤器、表格、tr、origresults、origsum、newresults、newsum、td、i;
输入=document.getElementById(“输入”);
filter=input.value.toUpperCase();
table=document.getElementById(“列表”);
tr=table.getElementsByTagName(“tr”);
origresults=document.getElementById(“结果”);
origsum=document.getElementById(“总和”);
newresults=0;
newsum=0.0;
对于(i=0;i-1){
tr[i].style.display=“”;
newresults++;
newsum+=parseFloat(td.innerHTML);
}否则{
tr[i].style.display=“无”;
}
}
}
origresults.innerHTML=新结果;
origsum.innerHTML=parseFloat(newsum).toFixed(2);
}