首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试遍历引导程序行,使用DOM在每个行中添加3个col-4

尝试遍历引导程序行,使用DOM在每个行中添加3个col-4
EN

Stack Overflow用户
提问于 2020-12-18 10:42:57
回答 1查看 33关注 0票数 0

因此,我基本上是从Studio Ghibli API中提取数据,并从它获得的信息中输出引导卡中的数据。这部分工作,但我希望他们对齐在3列-md-4的行。

下面是我的for循环:

代码语言:javascript
复制
for (let col in row) {
      let newRow = document.createElement("div");
      newRow.setAttribute("class", "row");
      container.appendChild(newRow);
      for (col = 0; col <= 3; col++) {
        newCol[col].appendChild(card.appendChild(cardBody));
        cardBody.appendChild(cardTitle);
        cardBody.appendChild(cardSubtitle);
        cardBody.appendChild(cardText);
      }
    }

我基本上得到了一个无尽的循环,创建了数千个“行”,但在/data中没有我的"cols“。对于任何澄清,这里是文件的其余部分:

代码语言:javascript
复制
const row = document.querySelector(".row");
const container = document.querySelector(".container");
// const col = document.getElementById("col-md-4");

fetch("https://ghibliapi.herokuapp.com/films")
  .then((res) => res.json())
  .then(function (data) {
    console.log(data);
    displayResults(data);
  })
  .catch((err) => console.log(err));

function displayResults(data) {
  for (results of data) {
    // new col
    let newCol = document.createElement("div");
    newCol.setAttribute("class", "col-md-4");

    // card
    let card = document.createElement("div");
    card.setAttribute("class", "card");
    card.style.width = "18rem";

    // card body
    let cardBody = document.createElement("div");
    cardBody.setAttribute("class", "card-body");

    // card title
    let cardTitle = document.createElement("h5");
    cardTitle.setAttribute("class", "card-title");
    cardTitle.innerHTML = results.title;

    // card subtitle
    let cardSubtitle = document.createElement("h6");
    cardSubtitle.setAttribute("class", "card-subtitle mb-2");
    cardSubtitle.innerHTML = "-" + results.director;

    // card text
    let cardText = document.createElement("p");
    cardText.setAttribute("class", "card-text");
    cardText.innerHTML = results.description;

而且HTML相当简单:

代码语言:javascript
复制
 <div class="container">
      <div class="row"></div>
    </div>

编辑:我省略了所有样板HTML/bootstrap导入代码。

EN

回答 1

Stack Overflow用户

发布于 2020-12-18 11:58:12

看看这种方法,它使用字符串文字,而不是动态创建元素。

HTML:

代码语言:javascript
复制
<div class="container">
  <div id="card-selector" class="row">
  </div>
</div>

JS:

代码语言:javascript
复制
 const row = document.querySelector(".row");
 const container = document.querySelector(".container");

    fetch("https://ghibliapi.herokuapp.com/films")
      .then((res) => res.json())
      .then(function (data) {
        displayResults(data);
      })
      .catch((err) => console.log(err));

    function displayResults(data) {
      const cardSelector = document.getElementById("card-selector");
      data.forEach((result) => {
        let card = `
                  <div class="card" style="width: 18rem;">
                    <div class="card-body">
                      <h5 class="card-title">${result.title}</h5>
                      <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
                      <a href="#" class="btn btn-primary">Go somewhere</a>
                    </div>
                  </div>`;

        let containerDiv = document.createElement("div"); //create the col div
        containerDiv.setAttribute("class", "col-sm-6 col-md-4"); //Add the bootstrap col class as needed
        containerDiv.innerHTML = card;
        cardSelector.appendChild(containerDiv);
      });
    }

代码语言:javascript
复制
const row = document.querySelector(".row");
 const container = document.querySelector(".container");

    fetch("https://ghibliapi.herokuapp.com/films")
      .then((res) => res.json())
      .then(function (data) {
        displayResults(data);
      })
      .catch((err) => console.log(err));

    function displayResults(data) {
      const cardSelector = document.getElementById("card-selector");
      data.forEach((result) => {
        let card = `
                  <div class="card mb-3">
                    <div class="card-body">
                      <h5 class="card-title">${result.title}</h5>
                      <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
                      <a href="#" class="btn btn-primary">Go somewhere</a>
                    </div>
                  </div>`;

        let containerDiv = document.createElement("div"); //create the col div
        containerDiv.setAttribute("class", "col-sm-6 col-md-4"); //Add the bootstrap col class as needed
        containerDiv.innerHTML = card;
        cardSelector.appendChild(containerDiv);
      });
    }
代码语言:javascript
复制
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="container">
  <div id="card-selector" class="row">
  </div>
</div>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65351165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档