2017-02-11 128 views
-1

我的目标是创建一个2维数组,如果基于文本的(数字)输入。我想使用在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

应该只有每个'rows'之一和'cols'元件。你可以在问题中包含'html'吗? – guest271314

+0

@ guest271314这是HTML的很多代码。有没有特定的几行你正在寻找?另外,我不确定你的意思应该只有每行和每列中的一个。 – Kevin

+0

'document'中元素的'id'应该是唯一的。 'document'中最多应有'#row'和'#col'元素。你的意思是'row.value'和'col.value'? – guest271314

回答

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>

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] 
] 
+0

'document'中不应该有多个'rows'或'cols'元素。 – guest271314

+0

@ guest271314我不明白!如果只有一行或一列的多维数组,它如何? –

+1

不确定,除了OP实际上是试图将'rows'和'cols'设置为这些元素的'.value',请参阅回答@BulentVural。元素的'id'在'document'中应该是唯一的。 'document.getElementById()'应该返回至多一个元素。 – guest271314