Блог веб разработки статьи | видеообзоры | исходный код

Блог веб разработки статьи | видеообзоры | исходный код

webfanat вконтакте webfanat youtube

template html

template  html

Всем привет. Сегодня мы рассмотрим элемент 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 в html

Отмечу что шаблон мы можем применять множество раз как к одному элементу, так и к множеству других.

К примеру наш шаблон мы можем применять для вывода строк во всех таблицах проекта.

Тем самым грамотно используя элемент template можно значительно сократить написание кода и улучшить его читаемость.

На этом дорогие друзья данная статья подошла к концу. Если у вас остались вопросы оставляйте их в комментариях или переходите в мою группу

вконтакте.

Также у меня есть материалы на

youtube

если кому интересно переходите буду рад.

А я с вами прощаюсь. Желаю успехов и удачи! Пока!

Оцените статью:

Статьи

Разработки

Комментарии

В данном разделе пока нет комментариев!

Реклама

Запись экрана

Данное расширение позволяет записывать экран и выводит видео в формате webm