初歩的な事ですが教えて下さい。
for文で宣言した変数をfor文内で変更した時、
通常の記述で上手く動作しません。
どのようにしたら良いのでしょうか?
意味をなさないfor文ですが…
for (var i=0; i<5;i++){
alert("i=" + i);
i=4;//ここが上手くいかない
}
以下のようにすると意図した通りになります。
が、なんかかっこ悪い?違う気がする…
for (var i=0; i<5;){
alert("i=" + i);
i=4;//これだと上手くいく
i++;
}
上記以外のメジャーな方法って有るのでしょうか?
それともこれが最善でしょうか?教えて下さい。
No.1ベストアンサー
- 回答日時:
あまりfor文の中でfor文で定義した変数を変更することは聞かないですが・・・。
私ならwhile文を使いますね。
こんな感じです。
var i = 0;
while (i < 5) {
i = 4;
alert("i=" + i);
i++;
}
もちろん、i++の位置を変えると挙動も変わってくるので注意が必要ですが・・・。
ありがとうございます。
while文を使うのも良いかなとは思っていたのですが、
入れ子にした時、少しわかりにくくなるような
気がしてまして…
var i=0;
while (i<5){
var j=0;
while (j<7){
alert ("i=" + i + " j=" + j);
if (j = 4){ i=4; }
j++;
}
i++;
}
みたいなのはfor文の方がスマートかなぁ
ひょっとして俺が知らないだけなのか!?
と不安に思って質問した次第です。
こういう際は少し回りくどく見えてもwhile文使う方が当たり前
と考えて良いのでしょうか。
No.2
- 回答日時:
IE7,Firefox3で試してみました。
for (var i=0; i<5;i++){
alert("start: i=" + i);
i=4; //ここが上手くいかない
alert("end: i=" + i);
}
alert("end: i=" + i); で i=4 が確認され、次のインクリメントで条件を満たさなくなるためループを終了する。
問題ないように思いますが、どのような動作を期待しているのでしょうか…?
adobeのソフトはJavaSciptで動作を操作できる機能がありまして、
そのソフト内で実行されるJavaScriptでは
for文で宣言された変数の数値をfor文内でうまく変更できないようです。
for (var i=0; i<5;i++){
for (var j=0; j<7;j++){
alert("i=" + i + " j=" +j );
if(i=2){i=4;}
}
}
をブラウザ上のJavaScriptで実行した場合期待どうり動いてしまいました。
どうやら、adobeソフトを操作する時のJavaScriptのみでおこる挙動のようです。
今回質問した事でその事を知る事ができました。
混乱させてしまってすいません。
出来たハズの事が上手く動かない為、私自身も混乱してしまいました。
ブラウザ上のJavaScritでも挙動を調べてみるべきだったかもしれません。
think49さんx_jouet_xさん
どうもありがとうございました。
No.3
- 回答日時:
ちょっと私もどのような処理を期待されているのかイメージがつきません・・・。
すみません。場合によってはfor文やwhile文以外の制御文の方がベターかも知れませんし・・・。
adobeのソフトはJavaSciptで動作を操作できる機能がありまして、
そのソフト内で実行されるJavaScriptでは
for文で宣言された変数の数値をfor文内でうまく変更できないようです。
for (var i=0; i<5;i++){
for (var j=0; j<7;j++){
alert("i=" + i + " j=" +j );
if(i=2){i=4;}
}
}
をブラウザ上のJavaScriptで実行した場合期待どうり動いてしまいました。
どうやら、adobeソフトを操作する時のJavaScriptのみでおこる挙動のようです。
今回質問した事でその事を知る事ができました。
混乱させてしまってすいません。
出来たハズの事が上手く動かない為、私自身も混乱してしまいました。
ブラウザ上のJavaScritでも挙動を調べてみるべきだったかもしれません。
think49さんx_jouet_xさん
どうもありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- 英語 現在完了の「継続」ではなく「経験」の期間を表す前置詞について 2 2022/05/06 11:39
- 英語 "as provided for by law"の"for"の働きについて 1 2023/04/10 15:54
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:48
- 英語 提示文の文頭の"for"の意味と役割について 4 2023/03/04 18:28
- 英語 自動詞のhopeについて 5 2023/03/12 02:34
- C言語・C++・C# 変数のスコープ 5 2023/05/27 17:50
- その他(プログラミング・Web制作) Pythonでこのプログラミングを作りたいのですが 1 2022/10/24 18:56
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
google apps scriptの終了のさせ方
-
第3日曜日のみの日付を取得、...
-
javaScript textareaの一行あた...
-
択一形式のテストをつくりたいです
-
分岐処理(アルゴリズム)
-
特定のclassを表示、非表示にする
-
Javascript で可能でしょうか
-
APIを使って埋め込んだグーグル...
-
ASP.NETのコントロールの値をJa...
-
GoogleMap 住所から座標の取得
-
商品コードを入力で、商品名、...
-
javascriptにお詳しい方に質問...
-
アルファベットABCD…をスマート...
-
JavaScriptのindexedDBに格納し...
-
なぜmatchメソッドがエラーにな...
-
ホームページの最終更新日を他...
-
ページ最終行へジャンプする方法
-
GASでGoogleフォームの自動返信...
-
functionから別のfunctionを実...
-
javascriptで自動計算フォーム...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
google apps scriptの終了のさせ方
-
C#OpenCv V4にのエラーに関する...
-
メールフォームの日付入力フォ...
-
GASでundefinedエラーが出ます
-
ジェネレーターの作り方
-
GASでGoogleフォームの自動返信...
-
なぜmatchメソッドがエラーにな...
-
翌月を取得するGASが分かりません
-
ローカルにあるファイルを検索...
-
HTMLで作った時報アプリが動き...
-
ASP.NETのコントロールの値をJa...
-
C# 演算 奇数と偶数 表現の仕方
-
html javascript リンク先アド...
-
gas スプレッドシートがアクテ...
-
javascriptでテーブルに追加し...
-
VSCODE[Python]の設定について
-
JavaScriptで決まった「時刻」...
-
ASP.NET MVCでObjectをjsに渡す
-
イベントが初めの一回しか起き...
-
jqGridについて
おすすめ情報