初学者,但我花了很长时间搜索其他问题试图调试这个。我的问题如下:
我取两个数组,'左'和'右',计算它们之间的比率(使用我已经工作的函数)输出一个3x11数组的比率。
我最终想要制作的是一个包含4行12列的表格。 [0]行将列出'right',[0]列将列在左侧,然后表格的其余部分将托管相应的比率。
然后它应该替换html中的相关div。
也许这是显而易见的事情,我只是完全错过了它,或者这只是我所知道的一个漏洞。无论哪种方式,我花了大部分时间在它上面!
<!-- html -->
<body>
<input type="input" value="Enter a value"></input>
<div id="results_table">
Ratios:
<div id="result">ratios listed here</div>
<div id="result1">tables here</div>
</div>
</body>
//Javascript\\
$("input").change(function () {
var left = new Array(3);
var right = new Array(11);
left = [30, 40, 50];
right = [11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21];
result = fullCalc(left, right); //this calculates the ratios
$("#result").append(result);
var ratios = result;
resultstable = tableCreate(left,right,ratios);
$("#result1").append(resultsTable);
});
function tableCreate(a, b, c) {
newTable = document.getElementById("result1");
var tbl = document.createElement('table');
var tbdy = document.createElement('tbody');
tbl.style.width = '100%';
tbl.setAttribute('border', '1');
tbl.setAttribute('id', "results_tbl");
for (var i = 0; i < a.length + 1; i++) {
var tr = document.createElement('tr');
tr.setAttribute('id', "tablerow" + i);
for (var j = 0; j < b.length + 1; j++) {
var td = document.createElement('td');
if (i >= 1 && j === 0) {
var frontText = document.createTextNode(a[i-1]);
td.append(leftText);
td.setAttribute('id', "leftTable");
} else if (i === 0 && j >= 1) {
var rearText = document.createTextNode(b[j-1]);
td.append(rearText);
td.setAttribute('id', "rightTable");
} else {
var ratioText = document.createTextNode(c[i-1][j-1]);
td.appendChild(ratioText);
td.setAttribute('id', "ratioTable");
}
tr.appendChild(td);
}
tbdy.appendChild(tr);
}
tbl.appendChild(tbdy);
}
问题是没有表格出现,我不确定是否有人创建。有什么想法吗?
答案 0 :(得分:3)
如此接近!您必须将table
附加到某处:
tbl.appendChild(tbdy); //it has a tbody, but where is the table
//APPEND TO AN ELEMENT
答案 1 :(得分:1)
答案是typeJV的回答和Kevin B的评论的结合。
你做有一行代码附加tableCreate的结果,但你不从该函数返回一个值,所以不会发生追加。
您的脚本中似乎也有一些拼写错误,包括:
// create a (global) variable name with no capital letters
resultstable = tableCreate(left,right,ratios);
// refer to the variable name with a capital 'T' - that's a different variable
$("#result1").append(resultsTable);
// do you mean to make this a global variable?
newTable = document.getElementById("result1");
gdoron也是正确的,这些行是多余的:
var left = new Array(3); // allocate a new array
var right = new Array(11);
left = [30, 40, 50]; // throw away that array and create a brand new one
right = [11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]; // same here
result = fullCalc(left, right); // another undeclared var - this becomes global
答案 2 :(得分:0)
好的,我想通了!
问题是我强制填充表的for循环寻找不存在的值。ie。当j = 0且i = 0时,'else if'试图找到c [-1] [ - 1]的值,这显然不存在。我只是添加了另一个'else if'以适应桌子上的[0] [0]位置:
else if ( i === 0 && j ===0){
var variableText = document.createTextNode("variables");
td.appendChild(variableText);
td.setAttribute('id', "variableTable");
}
几乎可惜这只是一个编程错误。感谢所有人帮助改进我的代码。