0

这里是初学者,但我花了很长时间寻找其他问题来尝试调试它。我的问题如下:

我采用两个数组,“左”和“右”,计算它们之间的比率(使用我已经工作的函数)输出具有比率的 3x11 数组。

我最终要制作的是一张 4 行 12 列的表格。[0] 行将列出“右”,[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);

}

问题是没有表出现,我不确定是否正在创建一个表。有任何想法吗?

4

3 回答 3

3

很近!你必须附加你的table某个地方:

tbl.appendChild(tbdy); //it has a tbody, but where is the table
//APPEND TO AN ELEMENT
于 2013-11-05T19:05:42.750 回答
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
于 2013-11-05T19:11:06.960 回答
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");
}

几乎很遗憾,这只是一个编程错误。感谢大家帮助我改进我的代码。

于 2013-11-06T10:52:09.760 回答