- ベストアンサー
javascript 変数名の連結をしたい
javascriptで、ある同じ処理をいくつも書くのですが いくつも同じものを書かず、for等で繰り返させたいのです。 また、その際に変数名をばらばらにしたいのですが そのやり方がいまひとつ良く分かりません。 //同じ処理を繰り返さず・・・ area1_flagA = 1 area1_flagB = 1 area1_flagC = 1 area1_flagD = 1 //繰り返し処理で var area_array = [A,B,C,D]; for (var i in area_array){ area1_flag+i(←連結したいができない) = 1 } ※実際はもう少し複雑な処理になります そこで、変数名に変数名を連結させようとしたのですが うまくいきませんでした。 どうすれば、上記のような 繰り返し処理を施すことが可能でしょうか。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
evalを使うのが手っ取り早いわね。 eval("area1_flag" + area_array[i] + "=1"); こんな感じ。
その他の回答 (4)
- atse
- ベストアンサー率83% (36/43)
<script type="text/javascript"><!-- var area_array = ["A","B","C","D"]; for (var i in area_array){ this["area1_flag" + area_array[i]] = 1; } alert(area1_flagA + "/" + area1_flagB + "/" + area1_flagC + "/" + area1_flagD); //--></script>
お礼
回答ありがとうございます。 this[]でも no.2さんに教えていただいた eval()と同じようなことができるみたいですね。 参考にしてみます。
- yambejp
- ベストアンサー率51% (3827/7415)
配列っていうかオブジェクトでの処理ですねぇ・・・ それとarea_arrayの指定とforの使い方が変ですね こんなかんじ? <script> var area1_flag=new Object; var area_array=["A","B","C","D"]; for(var i in area_array ){ area1_flag[area_array[i]] = 1 } alert(area1_flag["A"]); </script>
お礼
回答ありがとうございます。 参考にしてみます。
- SAYKA
- ベストアンサー率34% (944/2776)
No1も書いてるけど、そういう場合は配列が良いね 配列っていうのは大抵は数値なんだけど実は文字列にもできる 例えば flag["エンディング"] = 1; //↑は↓と等価 x = "エンディング"; flag[x] = 1; // 半角英数なら↓でも良い。可変文字列で使いたいなら↑ flag.ending = 1;
お礼
回答ありがとうございます。 連想配列ってやつですね。
配列を使ったらどうですか。
お礼
回答ありがとうございます。 通常の変数名だと <div id="area1_flagA1"></div> のようにDHTMLで使用することができるのですが <div id="area1_flagA[1]">のような配列での書き方だと、 うまく動作しないため質問文のような方法とりました。
お礼
回答ありがとうございます。 うまくいきました!! evelを使うのですね!