ウェブサイト検索

html - Javascript 画像をランダム表示(同じ画像を表示しない)


私のポートフォリオサイトには、私のすべての写真をメイソンリータイプのグリッドで表示するギャラリーがあります。今、それらの写真を一度も重複せずにランダム化したいです!つまり、ギャラリーに同じ画像が表示されないようにしたいのです。

// place your images in this array
var random_images_array = [
  'Laundry_Shoot (1).JPG',
  'Laundry_Shoot (5).JPG',
  'Laundry_Shoot (10).JPG',
  'Laundry_Shoot (28).JPG'
];

function getRandomImage(imgAr, path) {
  path = path || 'images/portfolio/'; // default path here
  var num = Math.floor(Math.random() * imgAr.length);
  var img = imgAr[num];
  var imgStr = '<img src="' + path + img + '" alt = "">';
  document.write(imgStr);
  document.close();
}
<!-- END FILTER BUTTONS -->
<div class="gallery">
  <div class="img filterDiv film portret">
    <script type="text/javascript">
      getRandomImage(random_images_array, 'images/portfolio/')
    </script>
  </div>
  <div class="img filterDiv film portret">
    <script type="text/javascript">
      getRandomImage(random_images_array, 'images/portfolio/')
    </script>
  </div>
  <div class="img filterDiv film portret">
    <script type="text/javascript">
      getRandomImage(random_images_array, 'images/portfolio/')
    </script>
  </div>
</div>
</div>

回答 #1

この関数を使って配列を「シャッフル」することができます:

random_image_array.sort(() => Math.random() - 0.5);
    

回答 #2

以下に示すように、Math.random() と Math.floor() 関数を使用してみることができます。

// stores all img paths
const imgs = [
  // your image paths go here
]

function chooseRandomImg() {
  // picks a random index
  const i = Math.floor(Math.random() * (imgs.length));
  
  // gets the img element from the HTML file
  const imgEle = document.getElementById("img-id");

  // sets the source of the img element to a random path from the imgs array
  imgEle.src = imgs[i];
}

// when the page is loaded, this picks a random img
window.onload = function () {
  chooseRandomImg();
}

あなたのHTMLファイルで、<img/> 要素を作成します。document.getElementById() のIDが <img/> 要素のIDと一致していれば、これが正しく動作するはずです。

<img id="img-id" width="50" height="50"/>

freecodecamp.org に、このようなものと似たもののチュートリアルがありますが、テキスト付きです。