列数、行数を指定してテーブルを作る
デモ
- rowsに行数を入力する
- colsに列数を入力する
- create tableをクリックする
とテーブルが作られます
この例ではtd内にtextareaを配置します
(最大で10行、10列までに制限しています)
コード.gs
function doGet() {
return HtmlService.createHtmlOutputFromFile("index");
}
|
意訳この機能がやること 指定したHTMLファイルを表示する |
index.html
<!DOCTYPE html>
<html>
<head>
<style>
textarea {
width: 120px;
height: 30px;
}
</style>
</head>
<body>
<input type='number' max="10" id='rows' placeholder="rows">
<input type='number' max="10" id='cols' placeholder="cols">
<button id='bt'>create table</button>
<div id="mainDiv"></div>
<script>
function get(id) {
return document.getElementById(id);
}
function create(tag) {
return document.createElement(tag);
}
get('bt').onclick = createElements;
function createElements() {
removeChild('mainDiv');
var table = create('table');
var tbody = create('tbody');
var cols = get('cols').value;
var rows = get('rows').value;
if(cols > 11 || rows > 11) {
alert('最大10列10行に設定してあります');
return;
}
for(var i = 0; i < rows; i++) {
var tr = create('tr');
for(var j = 0; j < cols; j++) {
var td = create('td');
var ta = create('textarea');
tr.appendChild(td);
td.appendChild(ta);
tbody.appendChild(tr);
}
var main_div = get('mainDiv');
table.appendChild(tbody);
main_div.appendChild(table);
}
}
function removeChild(id) {
var elem = get(id);
for (var i = elem.childNodes.length - 1; i >= 0; i--) {
elem.removeChild(elem.childNodes[i]);
}
}
</script>
</body>
</html>
|
意訳テキストエリアのスタイル 幅 高さ 行数の入力欄 列数の入力欄 ボタン div要素 この機能がやること 受け取ったidの要素を取得して返す この機能がやること 受け取ったtagの要素を作って返す btをクリックした時にcreateElementsを実行する この機能がやること mainDiv内の要素を削除する table要素を作る tbody要素を作る colsの値を取得する rowsの値を取得する もしcols が 11 より大きい または rows が 11 よりおきいなら アラートを出す 以下は実行しないでここで処理終える colsの数まで繰り返す tr要素を作る rowsの数まで繰り返す td要素を作る textarea要素を作る trにtdを追加する tdにtaを追加する tbodyにtrを追加する mainDiv要素を取得する tableにtbodyを追加する main_divにtableを追加する この機能がやること 受け取ったidの要素を取得する その要素内にある要素の数だけ繰り返す 要素を削除する |