Javascript-随机图像错误

Javascript - random images error

本文关键字:错误 图像 随机 Javascript-      更新时间:2023-09-26

我有以下问题,我有21张小图片,我希望它们在定义的时间间隔内随机放置在窗口中。

我有以下代码,我知道问题的原因,但我无法解决。

function addLoadEvent(func) {
    var oldonload = window.onload;
    if (typeof window.onload != 'function') {
        window.onload = func;
    } else {
        window.onload = function () {
            if (oldonload) {
                oldonload();
            }
            func();
        }
    }
}
addLoadEvent(Prep6);
addLoadEvent(Prep7);
function Prep6() {
    window_Height = window.innerHeight;
    window_Width = window.innerWidth;
    image_Element = document.getElementById("loader06");
    image_Height = image_Element.clientHeight;
    image_Width = image_Element.clientWidth;
    availSpace_V = window_Height - image_Height;
    availSpace_H = window_Width - image_Width;
    moveImage7();
    var changeInterval = 300;
    setInterval(moveImage7, changeInterval);
}
function moveImage6() {
    var randNum_V = Math.round(Math.random() * availSpace_V);
    var randNum_H = Math.round(Math.random() * availSpace_H);
    image_Element.style.top = randNum_V + "px";
    image_Element.style.left = randNum_H + "px";
}
function Prep7() {
    window_Height = window.innerHeight;
    window_Width = window.innerWidth;
    image_Element = document.getElementById("loader07");
    image_Height = image_Element.clientHeight;
    image_Width = image_Element.clientWidth;
    availSpace_V = window_Height7 - image_Height;
    availSpace_H = window_Width - image_Width;
    moveImage7();
    var changeInterval = 300;
    setInterval(moveImage7, changeInterval);
}
function moveImage7() {
    var randNum_V = Math.round(Math.random() * availSpace_V);
    var randNum_H = Math.round(Math.random() * availSpace_H);
    image_Element.style.top = randNum_V + "px";
    image_Element.style.left = randNum_H + "px";
}

问题是:

moveImage7();
function moveImage6()

我该如何解决?

我相信您遇到了一些范围问题。换句话说,moveImage6()和moveImage7()函数中使用的变量是看不到的,因为它们是其他函数的本地变量。要解决此问题,必须将这些变量传递给moveImage函数。您的moveImage函数通过setInterval函数定期调用,因此按如下方式传递参数:

setInterval(function(){
    moveImage6(availSpace_V, availSpace_H, image_Element);
 }, changeInterval);

这还需要更新moveImage6()和moveImage7()函数以接受这些参数。

使用setInterval 传递参数

jsfiddle:简化的实际

希望这能有所帮助!

PS:您可能需要将prep7()中的window_Height7更改为window_Height