The `template` element is an HTML element used to define reusable content that is not displayed on the page initially but can be dynamically inserted later using JavaScript.
template要素は、HTMLの中で非表示のコンテンツを定義するために使われます。この要素に含まれる内容は、ページが読み込まれたときにはレンダリングされず、スクリプトによって後で動的に使うことができます。
template要素を使った再利用可能なコメントセクションを動的に生成するサンプルコードです。この例では、ユーザーがコメントを追加すると、同じテンプレートを利用して新しいコメントがリストに追加される仕組みを実装しています。
HTML
<div id="comment-list"></div>
<template id="comment-template">
<div class="comment">
<div class="comment-author">名前</div>
<div class="comment-text">ここにコメントが表示されます。</div>
</div>
</template>
<form id="comment-form">
<input type="text" id="author" placeholder="Name" required><br>
<textarea id="text" placeholder="Comment" required></textarea><br>
<button type="submit">Add Comment</button>
</form>
<script>
<!-- JavaScript code here -->
</script>
JavaScript
const commentTemplate = document.getElementById('comment-template');
const commentList = document.getElementById('comment-list');
const commentForm = document.getElementById('comment-form');
commentForm.addEventListener('submit', function(event) {
event.preventDefault();
// フォームから入力された値を取得
const author = document.getElementById('author').value;
const text = document.getElementById('text').value;
// テンプレートを複製
const newComment = commentTemplate.content.cloneNode(true);
newComment.querySelector('.comment-author').textContent = author;
newComment.querySelector('.comment-text').textContent = text;
// 新しいコメントをリストに追加
commentList.appendChild(newComment);
// フォームをリセット
commentForm.reset();
});
CSS
.comment {
border: 1px solid #ccc;
border-radius: 5px;
margin: 10px 0;
padding: 10px;
}
.comment-author {
font-weight: bold;
margin-bottom: 5px;
}
.comment-text {
margin-bottom: 5px;
}
input, textarea {
margin-top: 1rex;
width: 200px;
}
このコードは、テンプレートの再利用性が高く、見た目もわかりやすいコメントセクションの例です。ユーザーが追加するたびに同じテンプレートを使って新しいコメントが表示されるため、簡潔かつ効果的な実装です。