从使用document.createElement()在数组中创建的输入字段读取值

时间:2019-08-08 00:09:37

标签: javascript

我正在尝试构建一个表,用户可以单击“换行”以创建表的新行。我是通过foo.push(document.createElement(“ INPUT”));

function newLine() {
  sArr.push(document.createElement("INPUT"));
  sArr[sArr.length-1].setAttribute("type", "text");
  document.body.appendChild(sArr[sArr.length-1]);

  gArr.push(document.createElement("INPUT"));
  gArr[gArr.length-1].setAttribute("type", "text");
  document.body.appendChild(gArr[gArr.length-1]);

  tArr.push(document.createElement("INPUT"));
  tArr[tArr.length-1].setAttribute("type", "text");
  document.body.appendChild(tArr[tArr.length-1]);
  //alert(sArr.length+", "+gArr.length+", "+tArr.length);
  var x = document.createElement("br");
  document.body.appendChild(x);
}

function calc(){
  var temp = 0;
  var total = 0;

  for(i = 0; i<sArr.length; i++){
    total = total + calc2(i);
  }

  var o = document.getElementById("output");
  o.value = total;
}

function calc2(i){
  alert(i);
  var s = document.getElementById(sArr[i]);
  var g = document.getElementById(gArr[i]);
  var t = document.getElementById(tArr[i]);
  var VO2walkmin = 3.28; 
  var VO2rest = 3.05; 
  var C1 = 0.32;
  var C2 = 0.19;
  var C3 = 2.66;
  var Cdecline = 0.73;
  var s2 = s.value;
  var g2 = g.value;
  var t2 = t.value;
  var negGrade = g.value;

  if(g2 < 0){g2 = 0};

  VO2move = ((C1 * g2)+VO2walkmin)+((1+(C2*g2))*(C3*(s2^2)));

  VO2inc = VO2rest+(t2*VO2move);

  VO2dec = VO2rest+(Cdecline*(t2*VO2move))

  //var o = document.getElementById("output");

  return VO2inc;
}

运行时出现错误:

Uncaught TypeError: Cannot read property 'value' of null

从第66行开始。具体来说,此行:

var s2 = s.value;

我正在努力在这里找到我的错误...,感谢所有帮助。

2 个答案:

答案 0 :(得分:3)

您创建了一个新元素,但是没有ID。因此,您无法通过ID来获取它。 document.getElementById(sArr[i])的结果将为空。

检查此答案以了解如何将ID分配给新创建的元素:

Create element with ID

答案 1 :(得分:0)

无需使用document.getElementByIdsArr[i]是输入元素本身,而不是其ID,因此您可以直接读取其值。

var s = sArr[i];
var g = gArr[i];
var t = tArr[i];