- 締切済み
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」……とアラートで数えてくれるのですが、何が問題なのでしょうか?
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- b0a0a
- ベストアンサー率49% (156/313)
var i=0 while(i<10)alert((i++)+"になりました")
- hitomura
- ベストアンサー率48% (325/664)
messageが作られた時点でiの値が0だからです。messageにとってはそのあとiの値がどうなろうと知ったことじゃあないんです。 あなたが期待する動作をさせたいならば、 <script> var i=0; var message="になりました"; while(i<10){ alert(i+message); i++; } </script> でしょうか。
お礼
回答ありがとうございます。 message内に変数が含まれていれば、変数が変われば勝手にmessageも変わるだろうと思っていたのですが、while文中に入れておかないと変数の変化が反映されないのですね。
- yambejp
- ベストアンサー率51% (3827/7415)
whileの中でmessageを更新しないとしかたないのでは? いちおうきちんとやるならtoStringもしたほうがいいですね <script> var i=0; while(i<10){ var message=i.toString()+"になりました"; alert(message); i++; } </script>
お礼
回答ありがとうございます。 while文中でmessage内の変数を更新しないといけないのですね。 toString()メソッドを使わないと、どういう不具合が起きるのでしょうか?
お礼
回答ありがとうございます。 while文において、i++;は末尾に書くケースをよく見かけますが、そういう書き方もできるのですね。