简体   繁体   English

如何在 JavaScript 中使用 For 循环来显示列表?

[英]How do I use For Loop in JavaScript to show the list?

I am a beginner in JavaScript and I can't figure out the following problem: I am trying to create a simple JavaScript Movie List.我是 JavaScript 的初学者,我无法弄清楚以下问题:我正在尝试创建一个简单的 JavaScript 电影列表。 I have 10 lists on the Movie List.我在电影列表中有 10 个列表。 I tried to show all of the lists with for loop, but it doesn't work.我试图用 for 循环显示所有列表,但它不起作用。 Here's the code:这是代码:

function renderModal() {
    for (let i = 0; i < listMovies.length; i++) {
        let movieData = listMovies[i];
        document.getElementById("poster").src = movieData.img;
        document.getElementById("title").innerHTML = movieData.name;
        document.getElementById("genre").innerHTML = movieData.genre;
        document.getElementById("rating-num").innerHTML = "Rating: "+ movieData.rating + "/10";
        document.getElementById("movie-desc").innerHTML = movieData.desc;
        document.getElementById("imdb-page").href = movieData.link;
        return movieData;
    }
}

What do I have to do?我需要做什么? Help me to fix it!.帮我修一下!。

Your return movieData;return movieData; will stop the loop dead.将停止循环死。 Not that running it more than once will change anything since you change the same elements over and over.并不是说多次运行它会改变任何东西,因为您一遍又一遍地更改相同的元素。 IDs must be unique. ID 必须是唯一的。

Here is a useful way to render an array这是渲染数组的有用方法

document.getElementById("container").innerHTML = listMovies.map(movieData => `<img src="${movieData.img}" />
  <h3>${movieData.name}</h3>
  <p>${movieData.genre}</p>
  <p>Rating: ${movieData.rating}/10</p>
  <p>${movieData.desc}
    <a href="${movieData.link}">IMDB</a>
  </p>`).join("<hr/>");

返回movieData,for循环会提前结束。你应该把它放在for循环之外。

You can use template tag for list and render it into target element.I am showing an example.您可以将模板标签用于列表并将其渲染到目标元素中。我正在展示一个示例。

Movie list电影列表

<div id="movieList"></div>

template for list列表模板

<template id="movieListTemplate">
    <div class="movie">
        <img src="" class="poster" alt="">
        <div class="title"></div>
        <div class="genre"></div>
        <div class="rating-num"></div>
        <div class="movie-desc"></div>
        <div class="imdb-page"></div>
    </div>
</template>

Javascript code: Javascript代码:

if (listMovies.length > 0) {
       const movileListTemplate = document.getElementById('movieListTemplate')
       const movieRenederElement = document.getElementById('movieList')

       for(const movie of listMovies) {
           const movieEl = document.importNode(movileListTemplate.content, true)
            movieEl.querySelector('.poster').src = movie.img
            movieEl.querySelector('.title').textContent = movie.name
            //use all queryselector like above
        }
   }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM