首页 > 解决方案 > 窗口移动功能

问题描述

我正在尝试在设置的计时器上将窗口移动特定数量的像素。现在我让我的 startWindow 函数(它包含移动窗口函数)持有一个应该每 0.35 秒移动一次窗口的计时器。但由于某种原因,我无法弄清楚它不起作用。顺便说一句,这是一个家庭作业,所以如果可能的话,请不要给我完整的答案,只是建议。这是我遇到问题的代码:

    <head>
        <script>
            var aWindow;
            var current = 0;
            function openWindow() {
                aWindow = window.open("", "", "width=400, height = 200");
                aWindow.document.write("This is my new Window");
            }

            function closeWindow(){
                if(aWindow) {
                    aWindow.close();
                }
            }

            var moveWindow = function windowMove() {
                    if (aWindow) {
                    aWindow.moveTo(100, 0);
                    aWindow.moveTo(200, 0);
                    aWindow.moveTo(300, 0);
                    aWindow.moveTo(400, 0);
                    aWindow.moveTo(500, 0);
                    aWindow.moveTo(600, 0);
                    aWindow.moveTo(700, 0);
                    aWindow.moveTo(800, 0);
                    aWindow.moveTo(900, 0);
                    aWindow.moveTo(1000, 0);
                    aWindow.moveTo(1000, 100);
                    aWindow.moveTo(1000,  200);
                    aWindow.moveTo(1000,  300);
                    aWindow.moveTo(1000,  400);
                    aWindow.moveTo(1000,  500);
                    aWindow.moveTo(1000, 600);
                    aWindow.moveTo(1000, 700);
                    aWindow.moveTo(1000, 800);
                    aWindow.moveTo(1000, 900);
                    aWindow.moveTo(1000, 1000);
                    aWindow.moveTo(900, 1000);
                    aWindow.moveTo(800, 1000);
                    aWindow.moveTo(700, 1000);
                    aWindow.moveTo(600, 1000);
                    aWindow.moveTo(500, 1000);
                    aWindow.moveTo(400, 1000);
                    aWindow.moveTo(300, 1000);
                    aWindow.moveTo(200, 1000);
                    aWindow.moveTo(100, 1000);
                    aWindow.moveTo(0, 1000);
                    aWindow.moveTo(0, 900);
                    aWindow.moveTo(0, 800);
                    aWindow.moveTo(0, 700);
                    aWindow.moveTo(0, 600);
                    aWindow.moveTo(0, 500);
                    aWindow.moveTo(0, 400);
                    aWindow.moveTo(0, 300);
                    aWindow.moveTo(0, 200);
                    aWindow.moveTo(0, 100);
                    aWindow.moveTo(0, 0);

                }
                function startWindow(){
                    if (timer){ 
                        timer = setInterval(moveWindow(), 350);
                    }
                }
                function stopWindow() {
                clearInterval(timer);
                }
            }

</script>
</head>
        </script>
    </head>
    <body>
        <button onclick="openWindow();">Open</button>
        <button onclick="closeWindow();">Close</button>
        <button onclick="startWindow();">Move</button>
        <button onclick="stopWindow();">Stop</button>


    </body>
</html>

标签: javascripthtml

解决方案


好的,这里有一些建议:

为了在函数调用之间创建时间延迟,您可以使用await或者您可以使用setIntervalsetTimeout

在链接中,您可以找到基本示例,以便您了解每个示例的工作原理,但我猜这await将解决您的问题。

如果您想坚持该setInterval方法,您可以使用您的值创建一个数组并调用一个更新函数,该函数将增加索引并调用数组上的每个值。

我真的建议使用eventListeners而不是内联事件。


推荐阅读