Bokleence Ответов: 1

Как показать данные из JSON-файла на основе нажатого элемента по идентификатору


Ладно, с чего начать....
Я строю свою библиотеку фильмов.И у меня есть две страницы, индекс и movie.html.
Index.html появится страница, на которой будут отображаться элементы фильма, каждый элемент будет иметь название, картинку, партитуру, краткое резюме и имена режиссера и сценария.И, кроме того, у меня будет имя от автора, если фильм основан на книге. Все это взято из JSON-файла, который я создал локально.


В другой html-странице, movie.html, я планирую иметь более причудливый дизайн с большей информацией. Например: победы, синопсис, актеры и их персонажи и т. д.

Но вот проблема, с которой я столкнулся.

Что я уже пробовал:

У меня есть это до сих пор index.html

$( document ).ready( function () {

    $.getJSON( "js/appjson.json", function ( data ) {
        for ( var i = 0; i < data.length; i++ ) {

            for ( var key in data[ i ] ) {

                if ( key === "novel" ) {
                    $( '#jsonLoad' ).append( '<a href="movies.html?id='%20+%20data[%20i%20].id%20+%20'" class="itemsHolder">' +
                    "<div class="titleHolder">" +
                    "<h2>" + data[ i ].name + "</h2>" +
                    "</div>" +
                    "<div class="novelAuthor">" +  "<p class="NovelTxt">" + "Novel by" + " " + data[ i ].novel +"</p>" + "</div> " +
                    "<div class="posterHolder">" + data[ i ].posterPath + "</div>" +
                    "<div class="summaryShort">" + data[ i ].summary + "</div>" +
                    "<div class="raiting"><p>" + data[ i ].imdb + "</p></div><div class="genderMovie"> " + data[ i ].gender + "</div> " +
                    "<div class="directorNdScreen">" + 'Directed by ' + " <p class="director">" + data[ i ].director + '</p>' + '  ' + ' Screenplay by ' + "<p class="screenplay">" + data[ i ].screenplay + "</p>" + "</div>"


                    + "</a>" )
                }

            }
            if(!data[i].novel){
                $( '#jsonLoad' ).append( '<a href="movies.html?id='%20+%20data[%20i%20].id%20+%20'" class="itemsHolder">' +
                "<div class="titleHolder">" +
                "<h2>" + data[ i ].name + "</h2>" +
                "</div>" +
                "<div class="posterHolder">" + data[ i ].posterPath + "</div>" +
                "<div class="summaryShort">" + data[ i ].summary + "</div>" +
                "<div class="raiting"><p>" + data[ i ].imdb + "</p></div><div class="genderMovie"> " + data[ i ].gender + "</div> " +
                "<div class="directorNdScreen">" + 'Director by ' + " <p class="director">" + data[ i ].director + '</p>' + '  ' + ' Screenplay by ' + "<p class="screenplay">" + data[ i ].screenplay + "</p>" + "</div>"


                + "</a>" )
            }

        }
    } )

} );


Допустим, у меня есть такой JSON-файл
[
  {
    "id":1,
    "name": "Godzilla",
    "imageStill" :" ",
  },
{
    "id":2,
    "name": "Transformers 1",
    "movieStill" : " ",
  }
]


И когда я нажимаю на элемент из index.html, в movie.html - я хочу иметь один образ.
Проблема у меня заключается в том, что у меня есть два изображения. Потому что он берет изображения с обоих объектов.
$( document ).ready( function () {

    $.getJSON( "js/appjson.json", function ( data ) {


            for ( var i = 0; i < data.length; i++ ) {

                    $( '.MovieInfo' ).append(
                        "<div class="imgStill">" + data[ i ].movieStill + "</div>"
                    )



        }
    } );


} );

1 Ответов

Рейтинг:
2

Afzaal Ahmad Zeeshan

Если вы посмотрите на свой код, то увидите, что используете каждый объект в своем документе JSON. Вот почему вы получаете 2 изображения, и оба элемента используются на вашей HTML-веб-странице.

for ( var i = 0; i < data.length; i++ ) {
    $( '.MovieInfo' ).append(
        "<div class="imgStill">" + data[ i ].movieStill + "</div>"
    ) 
}

Вам нужно изменить код на следующий,
for ( var i = 0; i < data.length; i++ ) {
    // Only use the required value. 
    if(data[i].id == idRequired) {
        $( '.MovieInfo' ).append(
            "<div class="imgStill">" + data[i].movieStill + "</div>"
        );
    }
}

Это проверит условие, передав требуемый идентификатор как, idRequired к вызову функции. Затем этот идентификатор будет использоваться либо для ввода данных на HTML-страницу, либо для пропуска добавления чего-либо вообще, например для отображения сообщения "не найдено".