Всем привет. Сегодня мы рассмотрим элемент template c помощью которого можно хранить куски html кода для неоднократного их использования. Итак, приступим!
Допустим у нас есть следующий код.
<table width="100%" border="1">
<thead>
<tr>
<td>Таб</td>
<td>ФИО</td>
</tr>
</thead>
<tbody>
</tbody>
</table>
Здесь у нас дана обычная таблица с двумя полями. В качестве шаблона мы возьмем строку таблицы:
<template id="template">
<tr>
<td></td>
<td></td>
</tr>
</template>
В теге template у нас содержится шаблон который мы будем неоднократно использовать. Заметьте что сам шаблон в браузер пока не выводится.
Теперь переходим к javascript коду! Для того чтобы пользоваться шаблонами в коде мы должны у элемента template проверить поддержку атрибута content.
if ('content' in document.createElement('template')) {
console.log('Браузер поддерживает данный элемент');
}else{
console.log('Браузер не поддерживает данный элемент');
}
В принципе все современные браузеры поддерживают этот элемент и атрибут. Далее мы должны получить наш шаблон и элемент в который мы его будем вставлять.
var template = document.querySelector('#template'),
tbody = document.querySelector('tbody');
Затем элементы в которые мы динамически будем помещать определенные значения
var td = template.content.querySelectorAll('td');
В нашем случае это ячейки таблицы. Здесь я воспользовался атрибутом content.
И в самом конце поместить значения в шаблон и вывести его:
var obj = {
"1":'Andrey',
"2":'Ola',
"3":'Artem',
"4":'Aleksey',
"5":'Aleksander'
};
for(i in obj){
td[0].textContent = i;
td[1].textContent = obj[i];
var clone = document.importNode(template.content, true);
tbody.appendChild(clone);
}
Здесь у нас в цикле перебирается объект obj. Свойства и значения которого присваиваются первой и второй ячейке таблицы в шаблоне. Заметьте что для присвоения новых значений элементу шаблона мы используем свойство textContent. C помощью метода importNode() объекта document мы пересоздаем наш шаблон уже со вставленными значениями. Завершающим этапом у нас является помещение нашего шаблона в выбранный элемент с помощью метода appendChild().
В результате с помощью шаблона у нас генерируются строки в таблице в ячейки которых подставляются свойства и значения объекта obj.
В общем виде все это выгладит так:
<table width="100%" border="1">
<thead>
<tr>
<td>Таб</td>
<td>ФИО</td>
</tr>
</thead>
<tbody></tbody>
</table>
<template id="template">
<tr>
<td></td>
<td></td>
</tr>
</template>
<script>
var template = document.querySelector('#template');
var td = template.content.querySelectorAll('td'),
tbody = document.querySelector('tbody');
var obj = {
"1":'Andrey',
"2":'Ola',
"3":'Artem',
"4":'Aleksey',
"5":'Aleksander'
};
for(i in obj){
td[0].textContent = i;
td[1].textContent = obj[i];
var clone = document.importNode(template.content, true);
tbody.appendChild(clone);
}
</script>
Отмечу что шаблон мы можем применять множество раз как к одному элементу, так и к множеству других.
К примеру наш шаблон мы можем применять для вывода строк во всех таблицах проекта.
Тем самым грамотно используя элемент template можно значительно сократить написание кода и улучшить его читаемость.
На этом дорогие друзья данная статья подошла к концу. Если у вас остались вопросы оставляйте их в комментариях или переходите в мою группу
вконтакте.Также у меня есть материалы на
youtubeесли кому интересно переходите буду рад.
А я с вами прощаюсь. Желаю успехов и удачи! Пока!