HTML 5 memperkenalkan <template>
elemen yang dapat digunakan untuk tujuan ini (seperti yang sekarang dijelaskan dalam spesifikasi WhatWG dan dokumen MDN ).
Sebuah <template>
elemen digunakan untuk menyatakan fragmen HTML yang dapat dimanfaatkan dalam skrip. Elemen diwakili dalam DOM sebagai HTMLTemplateElement
yang memiliki .content
properti DocumentFragment
tipe, untuk menyediakan akses ke konten template. Ini berarti bahwa Anda dapat mengkonversi string HTML untuk elemen DOM dengan menetapkan innerHTML
sebuah <template>
elemen, kemudian mencapai ke dalam template
's .content
properti.
Contoh:
/**
* @param {String} HTML representing a single element
* @return {Element}
*/
function htmlToElement(html) {
var template = document.createElement('template');
html = html.trim(); // Never return a text node of whitespace as the result
template.innerHTML = html;
return template.content.firstChild;
}
var td = htmlToElement('<td>foo</td>'),
div = htmlToElement('<div><span>nested</span> <span>stuff</span></div>');
/**
* @param {String} HTML representing any number of sibling elements
* @return {NodeList}
*/
function htmlToElements(html) {
var template = document.createElement('template');
template.innerHTML = html;
return template.content.childNodes;
}
var rows = htmlToElements('<tr><td>foo</td></tr><tr><td>bar</td></tr>');
Perhatikan bahwa pendekatan serupa yang menggunakan elemen wadah yang berbeda sepertidiv
tidak cukup berhasil. HTML memiliki batasan pada jenis elemen apa yang diizinkan ada di dalam jenis elemen lainnya; misalnya, Anda tidak dapat menempatkan td
sebagai anak langsung dari div
. Ini menyebabkan elemen-elemen ini menghilang jika Anda mencoba mengatur innerHTML
a div
untuk menampungnya. Karena <template>
s tidak memiliki batasan seperti itu pada konten mereka, kekurangan ini tidak berlaku ketika menggunakan templat.
Namun, template
tidak didukung di beberapa browser lama. Pada Januari 2018, Dapatkah saya menggunakan ... memperkirakan 90% pengguna secara global menggunakan browser yang mendukung template
s . Secara khusus, tidak ada versi Internet Explorer yang mendukungnya; Microsoft tidak menerapkan template
dukungan hingga dirilisnya Edge.
Jika Anda cukup beruntung untuk menulis kode yang hanya ditargetkan untuk pengguna di peramban modern, silakan dan gunakan sekarang. Jika tidak, Anda mungkin harus menunggu beberapa saat agar pengguna dapat mengejar ketinggalan.