- ベストアンサー
結合した文字列が配列名として正しく認識されないです...
はじめまして。m(_ _)m どう質問のタイトルをつけていいかもわからない初心者の質問ですが、 どなたか原因と解決方法をご指導いただけたら幸いです。 ----------------------------------- var stockYear = 'stock' + fiscalYear // 現在は1992です。 alert(fiscalYear); // このアラートでは 1992 と表示されます。 alert(stockYear); // このアラートではちゃんと stock1992 と表示されます。 document.write("<DIV>"); document.write(stockYear[arrayMonth[fileMonth]]); // **** 問題箇所 **** document.write("</DIV>"); // **** 問題箇所 **** // stock1992 と書けばちゃんと結果である「在庫無し」が出てくるのに、 // stock1992であるはずの stockYear と書くとundefinedとなってしまいます。(T-T)
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
仮にstock1992という配列があったとして var stockYear = 'stock' + fiscalYearとしても stockYearという配列にstock1992という文字列が代入されるだけです。 したがってdocument.write(stockYear[arrayMonth[fileMonth]]); とするとstockYear配列を探そうとして、変数としてしか定義されて いないためundefinedなわけです。 対策としてはstockYearに代入する際にevalをつかえば 解消されるでしょう。 var stockYear = eval('stock' + fiscalYear);
その他の回答 (1)
- dyna_1550
- ベストアンサー率34% (122/353)
eval() でかこったらどうなるでしょう? こんな風に document.write(eval(stockYear[arrayMonth[fileMonth]]));
お礼
できました~!ありがとうございます。 こうやってやったら一つ変数の定義が不要になりますね。便利~♪ 覚えておきます。(^-^)
お礼
とても分かりやすい丁寧なご説明をありがとうございました。 なるほどそれでundefinedだったわけですね。納得です。 おかげさまですごく勉強になりました!!!m(_ _)m