2017-02-14 1 views
0

私は2D配列を作成する必要があるプログラムを作成していますが、内部要素の色を黒色にし、外装要素を白色にします。何らかの理由で、私の2D配列はボックスではありません。 2つの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>

関連する問題