みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

javascriptに関しまして

javascriptに関しまして

if文の処理に関してお聞きしたいことがあります。

<script language="JavaScript">
<!--
myFlg = 0;
function myFunc(){
if(myFlg == 0){
document.myFormMeS.value = "こんにちは";
}
myflg = 1;
else{
document.myFormMeS.value = "";
myFlg == 0;
}
}
//-->
</script>

<form name="myform">
<input type="text" size="20" name="myFormMeS">
<script language="JavaScript">
<!--
setInterval("myFunc()",500);
// -->
</script>
</form>

というサンプルコードの中で、フラグの管理をする際に
初期値として、myFlg = 0をセットしているのでこんにちはと
表示してからmyFlg に1を代入していますが、その後一度if文を抜けて、
もう一度if(myFlg == 0)の判定を行っているのでしょうか?
それとも、そのままelse処理に進むのでしょうか・・・?

if文を抜けた後にどこの判定に進むのかいまいちよく分かりません。

初歩的な質問になりますが、宜しくお願い致します。

投稿日時 - 2010-11-01 01:45:17

QNo.6289031

困ってます

質問者が選んだベストアンサー

こんにちは。

このソースはそもそも間違えていませんか?
(全角スペース入ってます)
<script language="JavaScript">
<!--
 myFlg = 0;
 function myFunc(){
  if(myFlg == 0){
   document.myFormMeS.value = "こんにちは";
  }
  myflg = 1;
  else{
   document.myFormMeS.value = "";
   myFlg == 0;
  }
 }
//-->
</script>

1.
myflg = 1;の位置がおかしいです。
2.
myflgという変数は無くmyFlg = 1;のはずです。
3.
myFlg == 0;ではなくmyFlg = 0;でフラグの初期化です。
4.
document.myFormMeS.valueではなくdocument.myform.myFormMeS.valueです。

これを踏まえて直すと
<script language="JavaScript">
<!--
myFlg = 0;
function myFunc(){
if(myFlg == 0){
document.myform.myFormMeS.value = "こんにちは";
myFlg = 1;
}
else{
document.myform.myFormMeS.value = "";
myFlg = 0;
}
}
//-->
</script>
になります。
これで動きを見ればきちんと追えると思います。
myFlg == 0の判定でフォームにこんにちはをセットしてmyFlg=1とフラグを立てる。
500ミリ秒後に再度myFuncが呼ばれた際にはmyFlg == 0の判定は偽(false)となるためフォームに空白をセットしてmyFlg=0でフラグを初期化。
以降繰り返しによりフォームの内容が点滅しているように見える。

投稿日時 - 2010-11-01 07:32:51

お礼

理解できました!
myFlg = 1;の位置がおかしかったですね。

とても分かりやすい説明ありがとうございます。

投稿日時 - 2010-11-02 01:12:11

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問