人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

javascriptについてです。

for(var i=0; i<10; i++){
hoge● = i;
}

●印部分に i の番号を入れたいのですが
どのように書けば良いのでしょうか。
下記と同じ様になる様にしたいと言う事です。
配列ではなく、変数にしたいのです。

hoge1 = 1;
hoge2 = 2;
hoge3 = 3;

よろしくお願い致します。

●質問者: worldtravel
●カテゴリ:コンピュータ ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● rsc
●100ポイント ベストアンサー

eval()関数を使うのはどうでしょうか。(^_^;

<script>
var script = '';
for(var i=0; i<10; i++){
 script+="hoge"+i+"="+i+";";
}
eval(script);
document.write(2*hoge5+1); // 2*5+1=11
</script>

worldtravelさんのコメント
ありがとうございます。 for文の中で簡単に使う方法はないでしょうか。

rscさんのコメント
for文の中で使うなら、こんなのはどうでしょうか。 >|js| <script> for(var i=0; i<10; i++){ eval("hoge"+i+"="+i+";"); } document.write(2*hoge5+1); // 2*5+1=11 </script> ||<

worldtravelさんのコメント
こういう書き方があるのですね。 勉強になりました。 ありがとうございました。

2 ● ぽけっとしすてむ
●100ポイント

という条件であれば、windowオブジェクトに直接変数を追加していく方法があります。

for(var i=0; i<10; i++){
window["hoge"+i] = i;
}
console.log(hoge1); // 1
console.log(hoge2); // 2
console.log(hoge3); // 3
console.log(hoge9); // 9

動作している環境がブラウザの場合、グローバル変数はwindowオブジェクトの子として作成されます。
このため、

var test=100;

window["test"]=100;

は同じ動作(結果)となります。
関数の中で使用した場合で関数の外では結果が異なってしまったり、また、他のコードの影響を受ける・与える事があります。
そのため、あまり良い方法ではないという条件が付きます。

※この回答は、わかりやすさを優先させて表現しています。


worldtravelさんのコメント
「window」にすると、このような事が出来るのですね。 今回の私の使い方を考えると問題はありません。 ありがとうございました。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ