関数を返すタグ関数
by ginpei
HTML
<ul id="yabai-list"></ul>
CSS
.price {
color: #999;
font-size: 0.8em;
}
JavaScript
// 要jQuery
// データ
const items = [
{ name: 'Sugoi pen', price: '3000' },
{ name: 'Sugokunai pen', price: '130' },
];
// DOMを生成する関数を返すタグ関数
function html(strings, ...keys) {
// DOMを生成する関数
return function(data) {
// 結合
let html = strings[0];
for (var i = 1; i < strings.length; i++) {
const key = keys[i - 1];
const value = data[key];
html += value + strings[i];
}
// DOMツリー生成
// (サボってjQuery使います。)
const tree = jQuery(html)[0];
return tree;
};
}
// テンプレート
const itemTemplate = html`
<li class="sugoi-item">
${'name'}
<span class="price">(${'price'}円)</span>
</li>
`;
// 実行
const elList = document.querySelector('ul#yabai-list');
items.forEach(data => {
elList.appendChild(itemTemplate(data));
});