提问人:József Kiss 提问时间:2/7/2022 最后编辑:József Kiss 更新时间:2/8/2022 访问量:448
在 clearInterval 之后返回
Return after clearInterval
问:
我有一个在函数中运行 setInterval 的代码。我试图实现的是在 clearInterval 发生后退出该函数。我设置了一个条件来检查间隔是否被清除。我正在努力寻找一种根据代码的当前状态从主 Start() 函数返回的方法。
法典:
function Start() {
var elementX = document.getElementById('moveMeX')
var elementY = document.getElementById('moveMeY')
elementY.style.top = "0px"
var posX = 0
startPosX = 0
var posY = 0
startPosY = 0
var speed = 1
var xIsMoving = true
var yIsMoving = true
var myIntervalX = setInterval(function() {
if(startPosX == 0) {
posX+=speed
elementX.style.left = posX + 'px'
if(posX==100) {
startPosX = 100
}
}
else if (startPosX==100) {
posX-=speed
elementX.style.left = posX + 'px'
if(posX==0) {
startPosX = 0
}
}
}, 10);
function stopX() {
clearInterval(myIntervalX);
xIsMoving = false
}
elementX.addEventListener("mousedown", stopX);
elementX.addEventListener("mousedown", startY);
function startY() {
var myIntervalY = setInterval(function() {
if(startPosY == 0) {
posY+=speed
elementY.style.top = posY + 'px'
if(posY==100) {
startPosY = 100
}
}
else if (startPosY==100) {
posY-=speed
elementY.style.top = posY + 'px'
if(posY==0) {
startPosY = 0
}
}
}, 10);
function stopY() {
elementY.style.zIndex = "-1";
clearInterval(myIntervalY);
yIsMoving = false
}
elementY.addEventListener("mousedown", stopY);
}
if (xIsMoving === false && yIsMoving === false) {
console.log('stopped')
stopped = true
}
}
Start()
答:
0赞
elunomas
2/7/2022
#1
您声明有问题的部分,
if (xIsMoving === false && yIsMoving === false) {
console.log('stopped')
stopped = true
}
目前只运行一次:首次调用 Start() 时。此时,这两个条件都是 false,因为变量的初始声明值为 true。
你可以每隔一段时间创建一个新的语句来运行这个语句,但这似乎没有必要,因为你当前的 stopY 函数实际上是你知道 xIsMoving 和 yIsMoving 都是 false 的地方——因为 stopY 只在 stopX 运行后运行。因此,只需将 of 的语句移到 stopY 函数的末尾即可:setInterval
if
stopped=true
function stopY() {
elementY.style.zIndex = "-1";
clearInterval(myIntervalY);
yIsMoving = false;
console.log("stopped");
stopped = true;
}
评论
0赞
József Kiss
2/7/2022
但是,我如何使用该信息从函数返回呢?
评论