【问题标题】:Display multiple random images rather than just the one显示多张随机图像,而不仅仅是一张
【发布时间】:2021-11-30 22:03:55
【问题描述】:

下面的代码随机显示一个数组中的一个图像。我一直在尝试更改它以随机显示数组中的所有图像,但没有成功。我使用了一个while循环来生成随机函数。 random 函数起作用并随机化整个数组,但仅返回图像。数组中有 8 张图片。

function DisplayImage(i) {
    let CardImage = document.createElement('img');
    CardImage.src = `Images/${images[i].img}`;
    CardImage.alt = CardImage.src;
    document.querySelector("#box").appendChild(CardImage);
}

谢谢

【问题讨论】:

  • 当你以0, 1, ..., 8 作为参数调用这个函数8次会发生什么?
  • 我得到了 8 张不同的图像。

标签: javascript arrays image


【解决方案1】:

您是否正在寻找类似这两种方法的东西?

随机选择一张图片:

function DisplayImage(totalImages) {
  const i = Math.floor(Math.random() * totalImages)
  let CardImage = document.createElement('img');
  CardImage.src = `Images/${images[i].img}`;
  CardImage.alt = CardImage.src;
  document.querySelector("#box").appendChild(CardImage);
}

或随机化所有图像:

function shuffle(array) {
  let currentIndex = array.length,  randomIndex;
  while (currentIndex != 0) {
    randomIndex = Math.floor(Math.random() * currentIndex);
    currentIndex--;
    [array[currentIndex], array[randomIndex]] = [array[randomIndex], array[currentIndex]];
  }

  return array;
}

function DisplayImage(totalImages) {
  const items = [...Array(totalImages).keys()]
  const randomItems = shuffle(items) 

  randomItems.forEach(item => {
    let CardImage = document.createElement('img');
    CardImage.src = `Images/${images[item].img}`;
    CardImage.alt = CardImage.src;
    document.querySelector("#box").appendChild(CardImage);
  })
}

【讨论】:

  • 谢谢 Axel,我想随机化所有图像。我收到一个错误:“未捕获的 TypeError:randomItems.foreach 不是 DisplayImage 的函数”
  • 打错了,你可以试试forEach 吗?
  • 感谢您的帮助,非常感谢 Axel 的帮助
  • 很好,那么你能接受这个答案是有效的吗?谢谢,祝你好运
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-17
  • 2014-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-10
  • 1970-01-01
相关资源
最近更新 更多