javascript - 如何使用来自 API 的数据输出乘法 div

标签 javascript api for-loop fetch

我正在使用一个 API,但我完全不知道如何使用来自 3 个不同对象的数据输出 3 个 div。发生的事情是 JS 只输出一个 div。我想知道如何防止 JS 覆盖?

  function reviews(id){
    fetch(`https://api.themoviedb.org/3/movie/${id}/reviews?api_key=9250b9e19854d9deaa571f4074bc38a3&language=en-US&page=1` ,{
        method: "GET",
    })
    .then(response => {
        return response.json();
    })
    .then(data => {
        console.log(data);
        output = '';
        for (i = 0; i <3; i++) {
            output = `
            <img src="https://cdn.business2community.com/wp-content/uploads/2017/08/blank-profile-picture-973460_640.png" class="align-self-start mr-3">
            <div class="media-body>
            <h5 class="mt-0 review-title">A Review by ${data.results[i].author}</h5>
            <p class="review-author">${data.results[i].author}</p>
            <p class="review-paragraph">${data.results[i].content.substring(0,200)}... <a href="#" class="see-more">see more</a></p>
            </div>
            `  
        }
        document.querySelector('.reviews-container').innerHTML = output;
    })
    .catch(showAlert())
  }

最佳答案

循环执行后,您正在 DOM 中输出 html 字符串。这只会输出 DOM 中的最后一个 html 字符串。

您需要附加 html,而不是覆盖它并将 html 添加到循环内的 DOM

使用Element.insertAdjacentHTML()功能

for (i = 0; i < 3; i++) {
    ...
    document.querySelector('.reviews-container').insertAdjacentHTML("beforeend", output); 
}

你也可以使用+=运算符

for (i = 0; i < 3; i++) {
  ...
  document.querySelector('.reviews-container').innerHTML += output;
}

出于性能原因,您应该移动以下语句

document.querySelector('.reviews-container')

跳出循环体并将其保存在某个变量中。

const el = document.querySelector('.reviews-container');

for (i = 0; i <3; i++) {
     ...
     el.insertAdjacentHTML("beforeend", output); 
}

您还可以将 HTML 字符串与 output 变量连接起来,然后在循环执行后设置元素的 innerHTML

这比在循环中访问 DOM 更好。

 for (i = 0; i <3; i++) {
      output += `...`  
 }
  
 document.querySelector('.reviews-container').innerHTML = output;

关于javascript - 如何使用来自 API 的数据输出乘法 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62610387/

相关文章:

c# - 如何使用 ServiceStack Redis API?

facebook - 以编程方式发布 Facebook 评论

python - 我如何将变量 names_and_ranks 分配给列表,每个元素等于城市名称及其对应的排名?

java - 如何让二维数组行并排打印为列?

javascript - 如何在调整内部 div 大小后设置相对于单击事件和初始滚动的滚动位置?

javascript - 如何更改我网站的标题颜色?

JavaScript Canvas : How to get the specific points on transparent png file?

json - 如何在 react native 应用程序中获取带有 header 的 api(POST)

php - 为什么 count 比 $count 差

javascript - 类型错误 : Cannot read property 'Page' of undefined