我正在尝试在设置的计时器上将窗口移动特定数量的像素。 现在,我的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>
答案 0 :(得分:1)
好的,这里有一些建议:
为了在函数调用之间创建时间延迟,可以使用await或使用setInterval或setTimeout。
在链接中可以找到基本示例,以便您了解每个示例的工作原理,但是我想await
将解决您的问题。
如果您想坚持使用setInterval
方法,则可以使用值创建一个数组并调用一个更新函数,该函数将增加索引并调用该数组上的每个值。
我真的建议使用eventListeners而不是内联事件。