• 締切済み

alert文に変数と文章を表示させたい

JavaScriptを勉強し始めた者です。 alert文とwhile文を組み合わせて、以下のようなプログラムを書いてみました。 <script> var i=0; var message=i+"になりました"; while(i<10){ alert(message); i++; } </script> 「0になりました」「1になりました」「2になりました」……と、アラートを10回表示してくれるプログラムです。 alert("iになりました");などと書くと上手くいかないようなので、新たにmessageという変数を設けました。 質問なのですが、messageの内容をアラート10回表示させるところまでは上手くいくのですが、アラート内の変数表示が変化せず、10回とも「0になりました」と表示されるのです。 alert(i)にすると、きちんと「0」「1」「2」……とアラートで数えてくれるのですが、何が問題なのでしょうか?

みんなの回答

  • b0a0a
  • ベストアンサー率49% (156/313)
回答No.3

var i=0 while(i<10)alert((i++)+"になりました")

selfless
質問者

お礼

回答ありがとうございます。 while文において、i++;は末尾に書くケースをよく見かけますが、そういう書き方もできるのですね。

  • hitomura
  • ベストアンサー率48% (325/664)
回答No.2

messageが作られた時点でiの値が0だからです。messageにとってはそのあとiの値がどうなろうと知ったことじゃあないんです。 あなたが期待する動作をさせたいならば、 <script> var i=0; var message="になりました"; while(i<10){ alert(i+message); i++; } </script> でしょうか。

selfless
質問者

お礼

回答ありがとうございます。 message内に変数が含まれていれば、変数が変われば勝手にmessageも変わるだろうと思っていたのですが、while文中に入れておかないと変数の変化が反映されないのですね。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

whileの中でmessageを更新しないとしかたないのでは? いちおうきちんとやるならtoStringもしたほうがいいですね <script> var i=0; while(i<10){ var message=i.toString()+"になりました"; alert(message); i++; } </script>

selfless
質問者

お礼

回答ありがとうございます。 while文中でmessage内の変数を更新しないといけないのですね。 toString()メソッドを使わないと、どういう不具合が起きるのでしょうか?

関連するQ&A