У меня есть веб-страница, в которой перечислены многие элементы (для конкретных фильмов), структура HTML каждого элемента в некотором роде большая и сложная (divs, images, links, CSS class , и т.д).Добавление сложного HTML динамически в div с помощью Javascript
Во-первых, я загружаю 100 элементов, и у пользователя есть возможность загрузить следующие 100 (это делается с помощью бесконечного прокрутки): к настоящему времени я делаю петицию AJAX с запросом еще 100 элементов и отвечает текстом HTML (все они загружены), и я просто добавлю его в документ.
Но теперь я не хочу отвечать текстом HTML, вместо этого хочу ответить на 100 элементов данных в JSON (я могу это сделать), тогда мой вопрос: какой из них лучший способ добавить эти элементы в документ с помощью Javascript?
Я знаю, что я могу перебрать массив JSON и построить каждый элемент, но, как я уже сказал, это большая структура HTML, и я действительно не хочу создавать divs, а затем присоединяю его к другому div, задавая классы CSS , и т. д. с Javascript, потому что он может стать беспорядочным, грязным и очень большим ... Итак, есть ли способ в javascript для достижения этого, возможно, используя что-то вроде шаблонов? Как я могу это сделать? Я просто хочу получить чистый и лучший код.
Структура каждого фильма, как это (я могу использовать его как шаблон?):
<div data-section="movies" data-movie_id="myid" id="movie-id" class="movie anotherclass">
<img src="myImageUrl">
<div class="aCSSclass">
<div class="aCSSclass">
<div class="aCSSclass"></div>
<div class="aCSSclass">
<div class="aCSSclass">
Movie title
</div>
<div class="details form-group">
<a class="aCSSclass" href="myHref">Details</a>
<button onclick="SomeFunction" class="aCSSclass">My button</button>
<div class="aCSSclass"><span class="icon star"></span><span class="aCSSclass"></span><span class="aCSSclass"></span><span class="aCSSclass"></span><span class="aCSSclass"></span></div>
</div>
</div>
</div>
</div>
</div>
Посмотрите в [фрагмент документа] (https: //developer.mozilla.org/nl/docs/Web/API/DocumentFragment). – Mouser
Вы можете либо сгенерировать все вручную (используя dom), клонировать предыдущий фильм и соответствующим образом изменять данные (jquery .clone()), либо использовать библиотеку шаблонов, например handlebars – juvian
@juvian Мне нравится этот способ (клонирование) таким образом, я могу только спрятал структуру, а copy-> fill it-> append it Спасибо! –