我的目标是在基于文本(数字)输入的情况下创建一个二维数组。我想使用HTML中使用的相同输入类型框,例如:
<input type="text">
行和列的数量将基于HTML文档中的另一个输入。这就是我到目前为止所拥有的:
var rows = document.getElementById("rows");
var cols = document.getElementById("cols");
for(var i = 0; i < rows; i++){
for(var j = 0; j < cols; j++){
//I don't know what to do here
}
}
我在嵌套的for循环中放入什么来获得列出的多维输入数组? Here is an example我试图让事情看起来像。用户将能够单击每个元素并能够输入数字。
答案 0 :(得分:3)
function createTable() {
var table = document.createElement('table');
var rows = +document.getElementById('rows').value;
var cols = +document.getElementById('cols').value;
for(var r=0; r<rows; r++) {
var tr = document.createElement('tr');
table.appendChild(tr);
for(var c=0; c<cols; c++) {
var td = document.createElement('td');
tr.appendChild(td);
var inp = document.createElement('input');
inp.setAttribute('type','text');
td.appendChild(inp);
}
}
var container = document.getElementById('input_container');
container.innerHTML = '';
container.appendChild(table);
}
td>input {
width: 30px;
height: 30px;
padding: 5px;
font-size: 20px;
}
Rows : <input type="text" id="rows" value="3">
Cols : <input type="text" id="cols" value="8">
<button onclick="createTable();">Create</button>
<div id="input_container"></div>
答案 1 :(得分:0)
var rows = document.getElementById("rows");
var cols = document.getElementById("cols");
var multi = []; // the multidimensional array of inputs
for(var i = 0; i < rows; i++){
var sub = []; // create a new sub-array for each row
for(var j = 0; j < cols; j++){ // fill the sub array
var input = document.createElement("INPUT"); // create an new input
input.setAttribute("type", "text");
sub.push(input); // push it into the sub array
}
multi.push(sub); // push the sub array into the multi array
}
然后multi
会是这样的:
[
[input, input, input, ..., input],
[input, input, input, ..., input],
...
[input, input, input, ..., input]
]