首页 > 解决方案 > 如何在随机图像数组中显示特定图像

问题描述

我有工作 javascipt 代码,在单击卡片后显示来自图像数组的随机图像。有 3 张卡片,点击每张卡片后,人们会看到一个不重复的随机图像。我现在的目标是确保人们必须在这 3 张卡片中的一张中看到特定的图像 2.jpg,并且它只会显示在其中一张卡片中。这是我的 HTML:

        <!DOCTYPE html>
    <html lang="en">

    <head>
      <meta charset="UTF-8">
      <title>Card</title>
      <link rel="stylesheet" href="main.css">
    </head>

    <body>
      <div class="wrap">
        <div class="card">
          <div class="front" onclick="getCard(0)"><img class="img1" src="https://lp.rustaro.ru/wp-content/uploads/transformation/cards/1.jpg" alt=""></div>
          <div class="back"><img class="img1" src="" name="randimg1"></div>
        </div>
        <div class="card">
          <div class="front" onclick="getCard(1)"><img class="img1" src="https://lp.rustaro.ru/wp-content/uploads/transformation/cards/1.jpg" alt=""></div>
          <div class="back"><img class="img1" src="" name="randimg2"></div>
        </div>
        <div class="card">
          <div class="front" onclick="getCard(2)"><img class="img1" src="https://lp.rustaro.ru/wp-content/uploads/transformation/cards/1.jpg" alt=""></div>
          <div class="back"><img class="img1" src="" name="randimg3"></div>
        </div>
      </div>
      <script src="main.js"></script>
    </body>

    </html>

和 JavaScript 部分:

    // Turning images
    var images = [];

    (function() {
      generateCards()
    })();

    var cards = document.querySelectorAll('.card');

    Array.from(cards).forEach(function(card) {
      card.addEventListener('click', function() {
        Array.from(card.querySelectorAll('.back, .front')).forEach(function(el) {
          ['back', 'front'].forEach(function(s) {
            el.classList.toggle(s)
          });
        });
      });
    });

    //Displaying different images on click
    function cardImg(index) {
      var cardNewImg = randomIntFromInterval(2,10);
      if (images[index] !== undefined) 
      {
        images[index] = -1;
      }     
      while (images.indexOf(cardNewImg)!= -1){
        cardNewImg = randomIntFromInterval(2,11); 
      }  
      images[index] = cardNewImg;
    }

    function generateCards() {
      for (var i = 0; i < 3; i++) {
        cardImg(i);
      }
    }

    function getCard(index) {
      if(!images[index].valid) {
        cardImg(index)
      }
      document["randimg"+(index + 1)].src = "https://lp.rustaro.ru/wp-content/uploads/transformation/cards/" + images[index] + ".jpg";
    }

    function randomIntFromInterval(min,max)
    {
      return Math.floor(Math.random()*(max-min+1)+min);
    }

这是工作上的链接。任何帮助,将不胜感激。

标签: javascript

解决方案


这将确保第一张(最左边的)卡始终是 nbr 2

function cardImg(index) {     
  var cardNewImg = randomIntFromInterval(2,10);
  if (images[index] !== undefined) 
  {
    images[index] = -1;
  }     
  while (images.indexOf(cardNewImg)!= -1)
  {
    cardNewImg = randomIntFromInterval(2,11); 
  }
  if (images.indexOf(2) == -1)
  { 
    images[index] = 2;
  }else{  
    images[index] = cardNewImg;}
 }

推荐阅读