Javascript Clearinterval JS之后的Setinterval重叠
这个故事是一个落下的气球。如果你成功点击气球的“停止”功能,你就赢了。否则,如果它下降450像素,你就输了 问题是当我按下气球时:它会改变src、alert me和clearInterval——现在我认为它会停止或等待下一个事件。 但是,在我点击警报上的“确定”后,它会继续下降 我的代码: 总之,我通过添加Bool变量找到了阻止它的方法。见下文: 不管怎么说,我不知道为什么会发生这种情况,我很乐意解释一下,或者用另一种方法来解决。塔克斯 id在启动函数的作用域中,所以在停止函数的作用域中未定义。您可以在两个函数之外声明它,以便它们都可以访问它:Javascript Clearinterval JS之后的Setinterval重叠,javascript,Javascript,这个故事是一个落下的气球。如果你成功点击气球的“停止”功能,你就赢了。否则,如果它下降450像素,你就输了 问题是当我按下气球时:它会改变src、alert me和clearInterval——现在我认为它会停止或等待下一个事件。 但是,在我点击警报上的“确定”后,它会继续下降 我的代码: 总之,我通过添加Bool变量找到了阻止它的方法。见下文: 不管怎么说,我不知道为什么会发生这种情况,我很乐意解释一下,或者用另一种方法来解决。塔克斯 id在启动函数的作用域中,所以在停止函数的作用域中未定义。
var id;
function Start() {
num = Math.floor(Math.random() * 501);
document.getElementById("balon").style.left = num + 'px';
id = setInterval(function () {
if (posX > 450 && ok) {
alert("Looser");
clearInterval(id);
}
else {
posX += Vpos * dt;
document.getElementById("balon").style.top = posX + 'px';
}
}, dt);
}
function Stop() {
document.getElementById("balon").src = 'JS Pics/balon2.gif';
alert("Winner");
clearInterval(id);
}
使用ok进行修复是可行的,因为您没有使用关键字var声明它,所以它被分配给窗口对象,或者您在外部范围中声明了它,但忘记了在代码段中追加 太棒了!塔克斯。
function Start() {
num = Math.floor(Math.random() * 501);
document.getElementById("balon").style.left = num + 'px';
var id = setInterval(function() {
if (posX > 450 && ok) {
alert("Looser");
clearInterval(id);
} else {
if (ok) {
posX += Vpos * dt;
document.getElementById("balon").style.top = posX + 'px';
} else {
clearInterval(id);
}
}
}, dt);
}
function Stop() {
ok = false;
document.getElementById("balon").src = 'JS Pics/balon2.gif';
alert("Winner");
clearInterval(id);
}
var id;
function Start() {
num = Math.floor(Math.random() * 501);
document.getElementById("balon").style.left = num + 'px';
id = setInterval(function () {
if (posX > 450 && ok) {
alert("Looser");
clearInterval(id);
}
else {
posX += Vpos * dt;
document.getElementById("balon").style.top = posX + 'px';
}
}, dt);
}
function Stop() {
document.getElementById("balon").src = 'JS Pics/balon2.gif';
alert("Winner");
clearInterval(id);
}