先日、後輩君にヘルプされた時に書いたコードのご紹介です。
要望としては、データを for 文でまわして、table 要素にデータを動的に追加したいとのことでした。
コード自体はそこまで苦労することなく掛けたのですが、今後もし使うことがあった時用のコピー元として、簡単にまとめます。
参考にさせていただいた記事はこちら。
javascriptでtableをループ その2-2 – Qiita
https://qiita.com/izcomaco/items/7ef5a08a9c542d84907b
参考に…というか、ほぼこちらのコードをまるっとコピーさせていただきました。
元となる table 要素はこちら。
とりあえずサンプルとして、項目が3つあるテーブルを作成しました。
<table id='data-table'> <tr><th>項目1</th><th>項目2</th><th>項目3</th></tr> </table>
JavaScript のコードは下記のとおりです。
コメントでも書いておりますが、5行分のデータを追加しています。
var tableEle = document.getElementById('data-table');
for (var i = 0; i < 5; i++) {
// テーブルの行を 5行追加する
var tr = document.createElement('tr');
for (var j = 0; j < 3; j++) {
// テーブルの列を 3行追加する
var td = document.createElement('td');
td.innerHTML = 'データ'+(i+1)+"-"+(j+1);
tr.appendChild(td);
}
tableEle.appendChild(tr);
}
要素の追加には .appendChild() を使っています。
こちらは、jQuery の .append() と同じことができるメソッドで、指定した要素の子要素の最後に、文字列や HTML 要素を追加することができます。
サンプルコードでは、8行目と 10行目です。
要素内にテキストを追加する際には .innerHTML() を使用しています。
サンプルコードでは 7行目で .innerHTML() を使って td 要素内に文字列を追加しています。
コードとしては以上です。
実際に使う際には、for..in 文などを使って、実際に table 要素に追加したいデータをまわして実行する方が使いやすいと思います。
以上、JavaScript の for 文などのループ処理を使って、動的に table 要素に行を追加する方法でした。
ご参考になれば幸いです。