アプリ版:「スタンプのみでお礼する」機能のリリースについて

以下のように書いているのですが、alertが途中で出なくなってしまいます。処理が止まってしまうのでしょうか。

どういう原因が考えられるでしょうか。



var count1=0;
var count2=0;


kansu1();


function kansu1()
{

window.clearTimeout(stid);

count1++;
alert(count);

siid = window.setInterval("kansu2()",10);

}



function kansu2()
{

count2++;

中略

if(count2>9)
{
window.clearInterval(siid);
stid = setTimeout("kansu1()", 1000);
}

}

質問者からの補足コメント

  • alert(count1);でした、すいません。

      補足日時:2015/09/26 14:14
  • 度々、すいません。alert(count1);とした状態でも、繰り返しが途中で止まってしまうのです。

      補足日時:2015/09/26 15:05
  • 度々、すいません。kansu1の中で、count2=0;としています。

      補足日時:2015/09/26 15:30

A 回答 (2件)

なさりたいことがイマイチよくわかりませんが・・・




以下のように若干の記述修正をして実行すれば、
 count2=0, 10,11,12・・・
として循環が続きます。
(ご質問のように止まることはないはずと思います)

> kansu1の中で、count2=0;としています
kannsu1で.setIntervalでkansu2を呼び出している限りcount2は増加し続けます。
実は、count2>9になるまで10mmsecで10回繰り返すという制御にどういう意味があるのかよくわかりませんが・・・

javascriptのsetTimeoutやsetIntervalにそのレベルでの時間の正確さを求めても・・・という気がします。

<ご参考まで>
var count1=0;
var count2=0;
var stid, siid;
kansu1();

function kansu1(){
 window.clearTimeout(stid);
 count1++;
 alert(count1 + " / " + count2);
 siid = window.setInterval(kansu2, 10);
}

function kansu2(){
 count2++;
//中略
 if(count2>9){
  window.clearInterval(siid);
  stid = setTimeout(kansu1, 1000);
 }
}
    • good
    • 0
この回答へのお礼

ご親切に丁寧なご回答をいただき、ありがとうございました。いろいろと処理はしているのですが、思うように動作しない原因がsetTimeoutの書き方にあるのではないか?と思い、そこだけ抽出して質問してみようと考え上記に至りましたが、それ自体にいろいろ問題があり、皆様を混乱させてしまい申し訳ありません。本日、いろいろ試したところ、setTimeoutは止まらずに動作していたようです。画面上に意図した変化が表れないので、思い込んでしまいました。新たな問題が発生しましたが、とりあえず、今回の質問で解決したかった点は解決しました。

お礼日時:2015/09/28 19:27

count2 が 10 になったら siid の繰り返し処理を中断していますが、


その際に count2 = 0 は不要でしょうか?

本筋とは関係ありませんが、二点ほど指摘です。

1) setInterval や setTimeout の呼び方
setTimeout("kansu1()", 1000) よりも
setTimeout(kansu1, 1000) のほうが現代的です。

2) 変数の未宣言
siid や stid は var 宣言しなくて大丈夫ですか?
また、未宣言の変数で clearTimeout をするのは危険だと思います。
    • good
    • 0
この回答へのお礼

ご親切に、アドバイスやご指摘をいただき、ありがとうございます。上に挙げた例文自体に、いろいろと問題があるようですね。ひとつひとつの処理に問題がないかを確認しながら、再度チャレンジしたいと思います。

お礼日時:2015/09/27 06:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!