gpt4 book ai didi

javascript - 无限循环不起作用

转载 作者:行者123 更新时间:2023-11-28 16:01:16 24 4
gpt4 key购买 nike

我认为我已经很接近让它工作了,但仍然无法弄清楚我的代码出了什么问题。我需要无休止地运行一个函数,根据图像的大小,通过一系列 13 或 15 个不同的图像随机交换图像 src。这个函数正在工作,但只有一次,它并没有像我计划的那样无限运行,而不会出现“太多递归”浏览器错误。代码如下:

function SwitchImageLoop(image, imageSize){
if(imageSize == '110x110'){var randomNumber = Math.floor(Math.random()*15) + 1};
if(imageSize == '247x110'){var randomNumber = Math.floor(Math.random()*13) + 1};
image = document.getElementById(image);
var randomTimer = Math.floor(Math.random() * 3000) + 1000;
FadeImages(image, imageSize, randomNumber);
var endlessLoop = setTimeout(function(){SwitchImageLoop(image, imageSize)}, randomTimer);
}

function FadeImages(image, imageSize, randomNumber){
$(image).fadeOut(300, function(){
$(image).attr('src', '/halcyonic/images/collage_' + imageSize + '_' + randomNumber + '.jpg').bind('onreadystatechange load', function(){
if(image.complete) $(image).fadeIn(300);
});
});
}

最佳答案

问题是当您在 setTimeout 函数内调用 SwitchImageLoop 时。您的 SwitchImageLoop 接受第一个参数作为字符串(id),但下次您在 setTimeout 内调用函数时,您将传递一个文档对象作为第一个参数。

function SwitchImageLoop(image, imageSize){
if(imageSize == '110x110'){var randomNumber = Math.floor(Math.random()*15) + 1};
if(imageSize == '247x110'){var randomNumber = Math.floor(Math.random()*13) + 1};

在下一次调用 document.getElementById(documentObject) 中会给你错误

    image = document.getElementById(image);
var randomTimer = Math.floor(Math.random() * 3000) + 1000;
FadeImages(image, imageSize, randomNumber);
var endlessLoop = setTimeout(function(){SwitchImageLoop(image, imageSize)}, randomTimer);
}

将您的函数重写为

    function SwitchImageLoop(image, imageSize){
if(imageSize == '110x110'){var randomNumber = Math.floor(Math.random()*15) + 1};
if(imageSize == '247x110'){var randomNumber = Math.floor(Math.random()*13) + 1};
var randomTimer = Math.floor(Math.random() * 3000) + 1000;
FadeImages(image, imageSize, randomNumber);
var endlessLoop = setTimeout(function(){SwitchImageLoop(image, imageSize)}, randomTimer);
}

function FadeImages(image, imageSize, randomNumber){
image=document.getElementById(image);
$(image).fadeOut(300, function(){
$(image).attr('src', '/halcyonic/images/collage_' + imageSize + '_' + randomNumber + '.jpg').bind('onreadystatechange load', function(){
if(image.complete) $(image).fadeIn(300);
});
});
}

关于javascript - 无限循环不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16908745/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com