<html><head><meta charset="utf-8"/></head><form name="formular"><label>Zeilen eingeben: <input id="inpZeile" name="inpZeile" type=number value="2"></label><label>Spalten eingeben: <input id="inpSpalte" name="inpSpalte" type=number value="2"></label></form><button type="button" onclick="machTabelle(document.forms.formular.elements.inpSpalte.value, document.forms.formular.elements.inpZeile.value)" id="MachTabelle">Tabelle erstellen</button></html><script src="testen.js"></script>var table ='';function machTabelle(x,y){ var myArr = new Array(x); for (var i = 0; i < myArr.length; i++) { myArr[i] = new Array(y); }; console.log (myArr); for(var i=0; i<x; i++) { table += '<tr>'; for(var j =0;j<y;j++) { table += '<td>' +j+ '</td>'; } table += '<tr>'; } document.write('<table border=1>' +table+ '</table>');}我改变了一些东西,但它总是返回一个 1D 数组而不是 2D ,只使用相同的数组代码作为片段工作。目标是制作数组和表格,获取用户输入的大小,当然稍后制作一个包含数组内容的表格。
1 回答
四季花海
TA贡献1811条经验 获得超5个赞
该表在您首先循环输入x然后循环输入时工作y
请注意,函数中没有变量table。var table = "";例如,您可以添加myArr不用于生成表的示例。
当您创建一个数组Array(y)时y,输入是一个字符串。(注意函数参数和输入字段的顺序。)
请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Array
例如machTabelle('3', '2')查看内联注释:
// Array with index 0 has the value of the input "2" as you are passing a string
var myArr = new Array(y);
// loop 1 time, as there is 1 item
for (var i = 0; i < myArr.length; i++) {
// set index 0 of the array to a new array with the y input of "2"
myArr[i] = new Array(y);
}
这myArr是一个二维数组而不是一维数组,因为您将数组包装在一个数组中:
myArr = [
[
"2"
]
]
添加回答
举报
0/150
提交
取消