HTML Element <template> - Example
The HTML element <template>
is used to define a generic container that can hold some HTML content, which can be loaded dynamically using JavaScript.
The content of the <template>
element is hidden upon page loads, but it can be rendered after page load using JavaScript.
Here is the example code, where we have a button to trigger a JavaScript method, that loads the content into the <template>
element container.
- The
<template>
is empty upon page load. - The
<template>
gets the HTML content upon clicking the button to load products.
<!DOCTYPE html>
<html lang="en">
<head>
<title>Example - HTML Element template</title>
<style>
table, th, td { border: 1px solid black; }
</style>
</head>
<body>
<p><button onclick="showProducts();">Show Products</button></p>
<table id="productsTable">
<thead>
<tr>
<th>Product ID</th>
<th>Name</th>
</tr>
</thead>
<tbody>
<!-- Products list will be inserted here using the template element dynamically -->
</tbody>
</table>
<template id="productRow">
<tr>
<td></td>
<td></td>
</tr>
</template>
<script>
if("content" in document.createElement("template")) {
var products = ["Bread", "Butter", "Cheese", "Milk"];
function showProducts() {
// Selecting the elements
var tbody = document.querySelector("#productsTable tbody");
var template = document.querySelector("#productRow");
// Remove previous data if any
tbody.innerHTML = "";
// Loop through item in the products array
for(i = 0; i < products.length; i++) {
// Clone the new row from template
var clone = template.content.cloneNode(true);
var td = clone.querySelectorAll("td");
// Add data to table cell from the array
td[0].textContent = i + 1;
td[1].textContent = products[i];
// Append the new row into table body
tbody.appendChild(clone);
}
}
} else {
alert("Your browser does not support template element!");
}
</script>
</body>
</html>
Overall
This example helps us understand the use cases of the HTML class attribute.