【HTML/Javascript】TableをJavascriptで動的に生成する方法
2022/07/18
前回作ったTableをJavascriptで動的に生成するようにしました。
完成形はこんな感じです。前回記事のようにセル入力できるようにしています。なのでExcelっぽい外観にしました。カラムはA〜Z、行数は20行としていますが、動的に生成しているのでいくらでも調整することができます。
HTMLはこのタグだけでOKです。あとはJavascript側で作るので。
<table></table>
Excel風にするためのスタイルシートはこちらです。
table {
border-collapse: collapse;
table-layout: fixed;
}
th {
border: 1px solid grey;
padding: 3px 10px;
background: #ddd;
font-weight: bold;
text-align: center;
}
.item {
border: 1px solid grey;
padding: 3px 10px;
background: #ddd;
font-weight: bold;
text-align: center;
}
.value {
border: 1px solid grey;
padding: 3px 10px;
cursor: pointer;
width: 100px;
}
Javascript側のソースコードです。カラム名は最初に配列で持つようにしました。これをかえれば列数が変わります。
var header = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I',
'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R',
'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];
var table = document.querySelector("table");
//ヘッダー(TH)
var row = table.insertRow(-1);
var th0 = document.createElement("th");
row.appendChild(th0);
th0.innerHTML=" ";
th0.width = 30;
for(var i=0; i<header.length; i++){
var th = document.createElement("th");
row.appendChild(th);
th.innerHTML=header[i];
th.width = 100;
}
table.width = 30 + 100*header.length;
//データ行(TR)
for(var r=1; r<=20; r++){
var row = table.insertRow(-1);
var cell1 = row.insertCell(-1);
cell1.className = 'item';
cell1.innerHTML = r;
for(c=1; c<=header.length; c++){
var cell = row.insertCell(-1);
cell.className = 'value';
cell.setAttribute('contenteditable','true');
cell.setAttribute('id','R'+r+'C'+c);
}
}
■これが完成形■
スポンサーリンク


