【问题标题】:Random image without repeat无重复的随机图像
【发布时间】:2020-09-25 23:43:02
【问题描述】:

当我点击图片时,图片是随机变化的,但碰巧有一些图片在点击后重复出现。我该如何解决?

下面是我的队列。

let h1 = document.querySelector('h1')
let bigSquare = document.createElement('div')
bigSquare.id = 'bigSquare'
h1.after(bigSquare)

let images = ['01.jpg', '02.jpg', '03.jpg', '04.jpg', '05.jpg']

let randomImage = function(){
   return (Math.round(Math.random()*(images.length-1)))
}

let image = document.createElement('img')
bigSquare.append(image)
image.src = images[randomImage()]

image.onclick = function(event){
   event.target.src = images[randomImage()]
}

【问题讨论】:

  • 洗牌图像数组。声明一个初始设置为 0 的 imageIndex 变量。显示 shuffledImagesArray[imageIndex] 并且每次单击图像时将 imageIndex 增加 1 并将源设置为 shuffledImagesArray[imageIndex]。您可以根据图像数组长度多次执行此操作,而不会得到重复的图像。

标签: javascript arrays random onclick append


【解决方案1】:

只需创建一个名为 "randNumb" 的变量,它存储其中生成的随机数,每当单击图像时,将先前的随机数与新的随机数进行比较,如果它们不同,则更改 img src 否则运行再次随机图像功能。

检查并运行以下代码片段以获取上述方法的实际示例:

let h1 = document.querySelector('h1');
let bigSquare = document.createElement('div');
let randNumb = 0;
bigSquare.id = 'bigSquare';
h1.after(bigSquare);

let images = ['01.jpg', '02.jpg', '03.jpg', '04.jpg', '05.jpg'];


let image = document.createElement('img');
bigSquare.append(image);
image.src = images[randNumb];

let randomImage = function(){

  let x = Math.round(Math.random()*(images.length-1)); // get random number
  
  if (x == randNumb) {
    randomImage(); // same random number so run function again
  } 
  else {
    randNumb = x;
    image.src = images[randNumb]; // not same random number so change src
    
    console.log("The image src right now is: " + image.src);
  }  
}

image.onclick = function(){randomImage()};
<h1></h1>

【讨论】:

  • 很高兴我能帮上忙。干杯。
猜你喜欢
  • 2021-11-13
  • 2013-02-15
  • 2017-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-23
  • 2015-10-27
相关资源
最近更新 更多