1

setInterval()以下は、とのスクリプトclearInterval()です..

clearInterval()停止するために検索しましたsetInterval()...そのコードを実装しましたが、機能していません..

ここで達成しようとしているのは、たとえば、8 つの捕食者と 3 つの獲物があるということです。 setInterval は、Prey よりも Predators が多いときに開始されるため、Prey は 3 減少し、Predator はさらに 3 増加します..そして獲物の数が 0 になったとき.. 獲物がなくなったので、捕食者の増加が止まるはずです..

ここでの問題は、獲物が 0 になったとき、捕食者がまだ増加していることですclearInterval()

<script>
    function startAni() {
        if ((document.getElementById('amount').value) >= (document.getElementById('amount5').value)) {
            alert("Predator is more than prey! FRENZY TIME!");
            var interval = setInterval(function () {
                Remove3(), removevalue3(), Add(), addvalues();
                if (document.getElementById('amount5').value = "0") {
                    alert("No more Prey!");
                    clearInterval(interval);
                }
            }, 5000);
        } else {
            alert("Prey is more than Predator! Revenge time!")
        }
    }
</script>

助けてくれてありがとう!

4

4 に答える 4

7

inputID を持つ DOM に実際のものが存在することを確認する必要があります。存在する場合amount5は、間隔がすぐにクリアされます...document.getElementById('amount5').value = "0"true

しかし

if (document.getElementById('amount5').value = "0") {

する必要があります

if (document.getElementById('amount5').value == "0") {

JavaScript では、二重等号 ( ==) を使用して比較します。

于 2012-05-28T13:26:30.870 に答える
1

これ:

if(document.getElementById('amount5').value = "0"){

==の代わりに使用する必要があり=ます。そうしないと、条件は常に真になります。そうは言っても、そのステートメントはすぐにタイマーを殺します。

于 2012-05-28T13:26:39.387 に答える
0

それを見る別の方法は、とsetTimeoutの代わりに使用することです:setIntervalclearInterval

function doAdd() {
    Remove3(), removevalue3(), Add(), addvalues();
    if (document.getElementById('amount5').value = "0") {
        alert("No more Prey!");
        // thats it, no more recursion as your stop condition has been met
    }
    else {
        setTimeout(doAdd, 5000); // continue as there is more to be done
    }
}
setTimeout(doAdd, 0); // start it off
于 2012-05-28T13:33:04.587 に答える
0

間隔変数のスコープの設定を間違えました。グローバル変数として定義する必要があります。

「startAni」関数で定義すると、「startAni」関数内のネストされた関数から変数にアクセスできなくなります。

次のように定義する必要があります。

<script>
    var interval;//define it here
    function startAni() {
        if ((document.getElementById('amount').value) >= (document.getElementById('amount5').value)) {
            alert("Predator is more than prey! FRENZY TIME!");
            interval = setInterval(function () {  //do not redefined interval as var just use it here
    ....

</script>
于 2013-10-28T04:24:40.823 に答える