2017-02-14 147 views
0

我正在創建一個程序,我需要創建一個2D陣列,但是我希望內部元素的顏色爲黑色,外部元素爲白色。出於某種原因,我的二維數組不是一個盒子。它看起來像可能連接了兩個二維數組。我做錯了什麼,有沒有更簡單的方法去做這件事?使內部陣列與外部不同

Picture to Explain我的問題和我正在嘗試做的事情。

這是我所有的工作迄今:

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++) { 
 
\t if(r == 0 || c == 0 || r == rows - 1 ||c == cols - 1){ 
 
\t \t var td = document.createElement('td'); 
 
\t \t tr.appendChild(td); 
 
\t \t var inp = document.createElement('input'); 
 
\t \t inp.setAttribute('type','text'); 
 
\t \t td.appendChild(inp); 
 
\t } else { 
 
\t \t var tq = document.createElement('tq'); 
 
\t \t tr.appendChild(tq); 
 
\t \t var inp = document.createElement('input'); 
 
\t \t inp.setAttribute('type','text'); 
 
\t \t tq.appendChild(inp); 
 
\t } 
 
    } 
 
} 
 
var container = document.getElementById('input_container'); 
 
container.innerHTML = ''; 
 
container.appendChild(table); 
 
}
td>input { 
 
    width: 30px; 
 
    height: 30px; 
 
    padding: 5px; 
 
    font-size: 20px; 
 
} 
 
tq>input { 
 
    width: 30px; 
 
    height: 30px; 
 
    padding: 5px; 
 
    background-color: #000000; 
 
    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

的問題是,tq不是一個標準的HTML元素,所以它不會被識別爲有效地添加一列到行。所以,最後所有的tq元素都在同一個表格列中,其他所有列都向右移動以補償。

最簡單的解決方案不是使用自定義元素,而是表示它與類的區別。

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++) { 
 
\t if(r == 0 || c == 0 || r == rows - 1 ||c == cols - 1){ 
 
\t \t var td = document.createElement('td'); 
 
\t \t tr.appendChild(td); 
 
\t \t var inp = document.createElement('input'); 
 
\t \t inp.setAttribute('type','text'); 
 
\t \t td.appendChild(inp); 
 
\t } else { 
 
\t \t var tq = document.createElement('td'); 
 
\t \t tr.appendChild(tq); 
 
     tq.classList.add('inner'); 
 
\t \t var inp = document.createElement('input'); 
 
\t \t inp.setAttribute('type','text'); 
 
\t \t tq.appendChild(inp); 
 
\t } 
 
    } 
 
} 
 
var container = document.getElementById('input_container'); 
 
container.innerHTML = ''; 
 
container.appendChild(table); 
 
}
td>input { 
 
    width: 30px; 
 
    height: 30px; 
 
    padding: 5px; 
 
    font-size: 20px; 
 
} 
 
.inner>input { 
 
    width: 30px; 
 
    height: 30px; 
 
    padding: 5px; 
 
    background-color: #000000; 
 
    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>