Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Clearinterval JS之后的Setinterval重叠_Javascript - Fatal编程技术网

Javascript Clearinterval JS之后的Setinterval重叠

Javascript Clearinterval JS之后的Setinterval重叠,javascript,Javascript,这个故事是一个落下的气球。如果你成功点击气球的“停止”功能,你就赢了。否则,如果它下降450像素,你就输了 问题是当我按下气球时:它会改变src、alert me和clearInterval——现在我认为它会停止或等待下一个事件。 但是,在我点击警报上的“确定”后,它会继续下降 我的代码: 总之,我通过添加Bool变量找到了阻止它的方法。见下文: 不管怎么说,我不知道为什么会发生这种情况,我很乐意解释一下,或者用另一种方法来解决。塔克斯 id在启动函数的作用域中,所以在停止函数的作用域中未定义。

这个故事是一个落下的气球。如果你成功点击气球的“停止”功能,你就赢了。否则,如果它下降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);
}