#javascript #jquery #html #css #json
#javascript #jquery #HTML #css #json
Вопрос:
В настоящее время создаю веб-сайт для индексации и воспроизведения фильмов, хранящихся на моем жестком диске, которые я недавно снял с DVD-дисков просто в качестве небольшого побочного проекта. У меня есть JSON-файл ‘master movie list’ со всеми необходимыми данными для каждого фильма, включая название, источник видео, источник видеопостера и жанр, который я хотел бы разрешить использовать для размещения фильма в нескольких разных жанрах.
В настоящее время проблема, с которой я сталкиваюсь, заключается в том, что при разборе сгенерированного списка жанров html не помещается в правильный идентификатор, который нравится ID на веб-странице.
Например: «жанр»: «комедия, недавнее, scifi»
Я поступил так, как думал, что должен, через getJSON и установив выходную переменную, для которой я получаю значение genre, разделил, чтобы сделать его массивом, и получил элемент, пройдя по каждому из них в цикле. Однако он не помещает его в нужное место. Приведенный выше пример по какой-то причине был бы помещен в comedy, recent, scifi, horror и несколько других, и у меня нет абсолютно никаких причин почему.
$.getJSON('/webresource/data/movies.json', function(data) {
console.log(data);
var output = '';
var ele = $('');
$.each(data, function(key, val) {
output = '<div class="video_box lazy-background" video-src="'
val.video_src '" video-poster-src="'
val.video_poster_src '">'
'<h5>' val.name '</h5>'
'</div> ';
var genres = val.genre;
var genresarray = genres.split(',');
for (i = 0; i < genresarray.length; i ) {
var genreelement = $('#' genresarray[i]);
genreelement.html(output);
}
});
});
[ { "name": "a star is born", "video_src":"/files/movies/A Star Is Born/astarisborn.mp4", "video_poster_src":"https://images-na.ssl-images-amazon.com/images/I/51R-TU6VaTL.jpg", "genre":"recently,romance,drama"}] // this is an example of the json
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="genre_box">
<h3>RECENTLY ADDED</h3>
<div class="scroll_box" id="recently"></div>
</div>
<div class="genre_box">
<h3>ACTION</h3>
<div class="scroll_box" id="action"></div>
</div>
<div class="genre_box">
<h3>COMEDY</h3>
<div class="scroll_box" id="comedy"></div>
</div>
Ответ №1:
Ваша output
переменная добавляется и сохраняется на каждой итерации вашего $.each
цикла. Что вы хотите, так это добавить в конец $("#action")
, $("#comedy")
и т.д. Вы должны сделать что-то в этом роде:
$.getJSON('/webresource/data/movies.json', function(data) {
console.log(data);
$.each(data, function(key, val) {
var output = '<div class="video_box lazy-background" video-src="'
val.video_src '" video-poster-src="'
val.video_poster_src '">'
'<h5>' val.name '</h5>'
'</div> ';
var genres = val.genre;
var genresarray = genres.split(',');
for (var i = 0; i < genresarray.length; i ) {
var genreelement = $('#' genresarray[i]);
genreelement.append(output);
}
});
});
Комментарии:
1. Отлично, спасибо! В итоге я пришел к тому же решению после нескольких часов головной боли, но ваше решение немного проще, что мне так нравится! Спасибо!