我将如何创建一个二维输入数组

时间:2017-02-11 22:17:25

标签: javascript html arrays multidimensional-array

我的目标是在基于文本(数字)输入的情况下创建一个二维数组。我想使用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我试图让事情看起来像。用户将能够单击每个元素并能够输入数字。

2 个答案:

答案 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]
]