我正在尝试构建一个表,用户可以单击“换行”以创建表的新行。我是通过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;
我正在努力在这里找到我的错误...,感谢所有帮助。
答案 0 :(得分:3)
您创建了一个新元素,但是没有ID。因此,您无法通过ID来获取它。 document.getElementById(sArr[i])
的结果将为空。
检查此答案以了解如何将ID分配给新创建的元素:
答案 1 :(得分:0)
无需使用document.getElementById
。 sArr[i]
是输入元素本身,而不是其ID,因此您可以直接读取其值。
var s = sArr[i];
var g = gArr[i];
var t = tArr[i];