Javascript 试图在java中创建一个重复函数,该函数将重复一个函数';x';次,然后在';x';时代
我正在努力创建一个随机图像生成器,用Javascript显示随机图像。我已经能够通过Javascript数学和使用随机变量使其显示随机图像。但遗憾的是,我还没有资格让我的代码自己重复 我知道这可能非常简单,但正如你所知,我们都从某个地方开始。我已经尽了最大努力压缩我的代码,我也查看了其他stackoverflow资源,但我仍然不走运 快速概述所发生的情况,您可以按下按钮,然后,选定的随机图像将替换为当前图像 我想要的:能够按下一个按钮,然后它将继续在随机图像中循环“x”次 我的代码:Javascript 试图在java中创建一个重复函数,该函数将重复一个函数';x';次,然后在';x';时代,javascript,html,Javascript,Html,我正在努力创建一个随机图像生成器,用Javascript显示随机图像。我已经能够通过Javascript数学和使用随机变量使其显示随机图像。但遗憾的是,我还没有资格让我的代码自己重复 我知道这可能非常简单,但正如你所知,我们都从某个地方开始。我已经尽了最大努力压缩我的代码,我也查看了其他stackoverflow资源,但我仍然不走运 快速概述所发生的情况,您可以按下按钮,然后,选定的随机图像将替换为当前图像 我想要的:能够按下一个按钮,然后它将继续在随机图像中循环“x”次 我的代码: 函数im
函数imgRandom(){
var myImages1=新数组();
myImages1[1]=“images/Random/Icon1.png”;
myImages1[2]=“images/Random/Icon2.png”;
myImages1[3]=“images/Random/Icon3.png”;
myImages1[4]=“images/Random/Icon4.png”;
myImages1[5]=“images/Random/Icon5.png”;
myImages1[6]=“images/Random/Icon6.png”;
myImages1[7]=“images/Random/Icon7.png”;
myImages1[8]=“images/Random/Icon8.png”;
myImages1[9]=“images/Random/Icon9.png”;
myImages1[10]=“images/Random/Icon10.png”;
myImages1[11]=“images/Random/Icon11.png”;
myImages1[12]=“images/Random/Icon12.png”;
myImages1[13]=“images/Random/Icon13.png”;
myImages1[14]=“images/Random/Icon14.png”;
myImages1[15]=“images/Random/Icon15.png”;
myImages1[16]=“images/Random/Icon16.png”;
myImages1[17]=“images/Random/Icon17.png”;
myImages1[18]=“images/Random/Icon18.png”;
myImages1[19]=“images/Random/Icon19.png”;
myImages1[20]=“images/Random/Icon20.png”;
myImages1[21]=“images/Random/Icon21.png”;
myImages1[22]=“images/Random/Icon22.png”;
myImages1[23]=“images/Random/Icon23.png”;
var rnd=Math.floor(Math.random()*myImages1.length);
如果(rnd==0){
rnd=1;
}
document.getElementById(“gen img”).src=myImages1[rnd];
}
我相信你想要的是循环。让我用您的代码演示:
var count = 10; //number of times to run the for loop
for (i = 0; i < count; i++){
var rnd = Math.floor(Math.random() * myImages1.length);
if (rnd == 0) {
rnd = 1;
}
document.getElementById("gen-img").src = myImages1[rnd];
}
var计数=10//运行for循环的次数
对于(i=0;i
上述代码将运行随机位10次(=10个图像)。现在,我还没有测试过它,但我相信图像会很快闪过。另外,与您可能想阅读的有关Javascript的问题无关。我使用了一种可能的方法对您的代码进行了一些重构,这里是重点:
我评论了一些解释
/* some flags you can set */
var timesTocycle = 10;
var totalImagesToCreate = 23;
var timeBetweenCycle = 3000;
/* global variables */
var allMyImages = [];
var timesCycled = 0;
/*
function to create your images path.
Called once when you load your page.
*/
function createMyImages(total) {
for (var i=0; i<total;i++) {
var imageNumber = i+1;
var path = getImagePath(imageNumber);
allMyImages.push(path);
}
}
/* separated your path getter */
function getImagePath(imageNumber) {
return "images/Random/Icon" + imageNumber + ".png";
}
/* this is the function called when you press the button and when one cycle ends */
function triggerRandomImage() {
if (timesCycled >= timesTocycle) return;
setTimeout(displayRandomImage, timeBetweenCycle);
}
/* random integer javascript function */
function getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
/* function called on setTimeout */
function displayRandomImage() {
var rnd = getRandomInt(0,allMyImages.length-1);
var imageToDisplayPath = allMyImages[rnd];
document.getElementById("gen-img").src = imageToDisplayPath;
timesCycled++;
triggerRandomImage();
/* debug info */
document.getElementById('info').innerText = "(showing: " + imageToDisplayPath + ", cycle: " + timesCycled + ", max: " + timesTocycle + ")";
}
/* call this function to populate the allMyImages array */
createMyImages(totalImagesToCreate);
/*您可以设置的一些标志*/
var-timesTocycle=10;
var totalImagesToCreate=23;
var timeBetweenCycle=3000;
/*全局变量*/
var allMyImages=[];
var timesCycled=0;
/*
函数创建图像路径。
加载页面时调用一次。
*/
函数createMyImages(总计){
对于(var i=0;i=timesTocycle)返回;
设置超时(显示随机图像,timeBetweenCycle);
}
/*随机整数javascript函数*/
函数getRandomInt(最小值、最大值){
返回Math.floor(Math.random()*(max-min+1))+min;
}
/*函数在setTimeout时调用*/
函数displayRandomImage(){
var rnd=getRandomInt(0,allMyImages.length-1);
var imageToDisplayPath=allMyImages[rnd];
document.getElementById(“gen img”).src=imageToDisplayPath;
时间循环++;
triggerRandomImage();
/*调试信息*/
document.getElementById('info').innerText=“(显示:“+imageToDisplayPath+”,循环:“+timesCycled+”,最大:“+timesTocycle+”)”;
}
/*调用此函数以填充allMyImages数组*/
createMyImages(totalImagesToCreate);
java!=javascriptHi在那里!谢谢你的回答,我相信你是正确的,但遗憾的是输出似乎没有任何效果,因此不会加载任何图像,谢谢你尽最大努力,我会尽我最大的努力使用这个。是否有其他可能或原因导致它无法工作?您是否实际调用过imgRandom()
函数?除非调用该函数,否则这些代码都不会执行。您好,谢谢您的回复!,我可以问一下我的图片列表放在哪里吗?不客气。它是在createMyImages
方法中生成的。这个函数用你的路径序列填充allMyImages
数组:images/Random/Icon1.png,images/Random/Icon2.png,images/Random/Icon3.png…嗨,mrlew,非常感谢你在帮助我方面所做的努力,我知道你可能比我先进得多,很高兴看到你的慷慨。我还有最后一个问题,有没有办法重复这个按钮?因为一旦点击它,您需要刷新代码才能再次执行,非常感谢您。-DavidNo problem,@BeastFox,但您的意思是在所有循环完成后?正确,在所有循环完成后单击按钮@MrLew后,您需要刷新页面以再次使用该按钮进行输出。