Как вы отметили в своем ответе, никакой конкатенации не произошло, поэтому вы перезаписывали свои данные.
Я пишу этот ответ, чтобы предложить немного измененную версию того, что вы 'делаешь.Если вы просто объединяете произвольные данные в контексте HTML (что вы делаете со строкой шаблона), вы рискуете создать недопустимый HTML или даже столкнуться с проблемами безопасности.Вы должны экранировать данные для использования.Самый простой / лучший способ сделать это - вовсе не установить innerHTML
, а innerText
.Возможно, попробуйте что-то вроде этого ... не проверено, но вы должны начать.
class UI() {
getListItem(item) {
const p = document.createElement('p');
p.innerText = item;
return p;
}
render(data) {
const list = document.getElementById('data');
data.map(this.getListItem).forEach((listItemP) => {
list.appendChild(listItemP);
});
}
}
const ui = new UI();
fetch ('./data/data.json')
.then((res) => res.json())
.then(ui.render);