Javascript - 随机图像错误

标签 javascript

我有以下问题我有 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() 函数以接受这些参数。

Passing parameters with setInterval

jsfiddle: simplified in action

希望这对您有所帮助!

PS:你可能想把prep7()中的window_Height7改成window_Height

关于Javascript - 随机图像错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18140358/

相关文章:

javascript - 范围图像 URL 未更新并显示在 View 中 (AngularJS)

javascript - 如何让来自ajax的数据成为Highchart中的X轴?

javascript - 使用async/await进行同步代码执行时, "sync-ify"第三方代码怎么办?

javascript - 条件加载 jquery 和 jquery UI 问题

javascript - 如何从 NodeJs 启动和停止 Electron 应用程序

javascript - 滚动突然停止在 wordpress 网站上工作

javascript - 我可以使用映射函数的索引作为包含动态不可预测文本的 React 组件的键吗?

javascript - 如何将属性转换为 bool 值(深)

javascript - 使用 JavaScript 和 JSON 构建内联 SVG 图表

javascript - 等距拓扑排序问题