首页 > 解决方案 > javascript document.getelementbyid() 不适用于 html 加载循环

问题描述

我编写了一个函数,通过尝试获取每个 div id 来填充 index.html 中的 6 个 div。我希望在加载页面时发生这种情况。

发生的情况是图像仅填充第 6 个 div,我想要的是要在 id='flip-card' 的所有 div 中加载的图像。

我将“console.log(i)”放在 for 循环中以检查循环是否有效。它正在工作,但不知何故不想用图像填充所有 div,它只填充最后一个。

谁能帮助我在这里错过了什么?非常感谢您的帮助

这是我的 index.html 文件

<div id="container-project-5">
    <h1>MEMORY GAME</h1>
    <div class="container-flip-row">
      <div id="flip-card-1" class="flip-card-spot"></div>
      <div id="flip-card-2" class="flip-card-spot"></div>
      <div id="flip-card-3" class="flip-card-spot"></div>
    </div>
    <div class="container-flip-row">
      <div id="flip-card-4" class="flip-card-spot"></div>
      <div id="flip-card-5" class="flip-card-spot"></div>
      <div id="flip-card-6" class="flip-card-spot"></div>
    </div>
  </div>

<script src="loadimage.js"></script>

这是我的 js 文件

function loadImage() {
  let img = document.createElement("img");
  img.src = "https://static8.depositphotos.com/1000792/861/v/950/depositphotos_8614495-stock-illustration-fun-zoo-koala.jpg";
  
  img.setAttribute("width", "150px");
  img.setAttribute("height", "150px");
  
  //THIS loop SUPPOSE to FILL ALL the <div> with id 'flip-card' BUT SOMEHOW it ONLY FILL the 6th <div> which is <div id='flip-card-6" class='flip-card-spot'>
  for (let i = 1; i <= 6; i++) {
    document.getElementById("flip-card-" + i).appendChild(img);
    //this is console log to check if for-loop is working
    console.log(i);
  }
}

//LOAD FUNCTION when BROwSER is LOADED
window.addEventListener("load", loadImage);

这是我的CSS

<style>

.flip-card-spot {
  display: flex;
  margin: 1px;
  background-color: green;
  width: 150px;
  height: 150px;
}

.container-flip-row {
  display: flex;
}

</style>

标签: javascriptdom

解决方案


您每次都附加相同的图像元素。将创建元素的代码也移动到循环内,以便您创建多个元素,或者使用cloneNode.


推荐阅读