<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 ,仅在片段工作时使用相同的数组代码。
目标是制作数组和表格,获取用户输入的大小,当然随后制作一个包含数组内容的表格。
最佳答案
当您首先循环输入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"
]
]
关于javascript - 为什么数组显示为 1D 而不是 2D 但表格有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62695353/