アプリ版:「スタンプのみでお礼する」機能のリリースについて

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
}

※実際はもう少し複雑な処理になります

そこで、変数名に変数名を連結させようとしたのですが
うまくいきませんでした。
どうすれば、上記のような
繰り返し処理を施すことが可能でしょうか。

A 回答 (5件)

evalを使うのが手っ取り早いわね。



eval("area1_flag" + area_array[i] + "=1");

こんな感じ。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

うまくいきました!!
evelを使うのですね!

お礼日時:2009/04/22 14: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>
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
this[]でも
no.2さんに教えていただいた
eval()と同じようなことができるみたいですね。
参考にしてみます。

お礼日時:2009/04/22 14:47

配列っていうかオブジェクトでの処理ですねぇ・・・


それと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>
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
参考にしてみます。

お礼日時:2009/04/22 14:45

No1も書いてるけど、そういう場合は配列が良いね



配列っていうのは大抵は数値なんだけど実は文字列にもできる
例えば

flag["エンディング"] = 1;
//↑は↓と等価
x = "エンディング"; flag[x] = 1;
// 半角英数なら↓でも良い。可変文字列で使いたいなら↑
flag.ending = 1;
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
連想配列ってやつですね。

お礼日時:2009/04/22 14:44

配列を使ったらどうですか。

    • good
    • 0
この回答へのお礼

回答ありがとうございます。
通常の変数名だと
<div id="area1_flagA1"></div>
のようにDHTMLで使用することができるのですが
<div id="area1_flagA[1]">のような配列での書き方だと、
うまく動作しないため質問文のような方法とりました。

お礼日時:2009/04/22 14:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!