- ベストアンサー
javascriptで質問があります。
title1で連想配列からaとbの値を出したいのですがundefinedが出ます。 どうすればいいのでしょうか。教えていただけると助かります。 <script type="text/javascript"> <!-- t0000={title:"a",id:"kin"}; t0001={title:"b",id:"gin"}; i=0; while(i<2){ c = "t000"+i alert(c); title1 = c["title"]; alert(title1); i++ } //--> </script>
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
eval使うなら、このほうが近いのではなかろうか? (判じものみたいなので、わかんないけれど) t0000={title:"a",id:"kin"}; t0001={title:"b",id:"gin"}; i=0; while(i<2) { c = "t000"+i; alert(c); title1 = eval(c + '["title"]'); alert(title1); i++ } --------------------------------- いっぱいある場合は、t000, t001・・・などを配列にして#1様のように定義しておく方が便利。 そうしておけば、evalを使わなくてもアクセスが可能になります。 t = [ {title:"a",id:"kin"}, {title:"b",id:"gin"} ]; i=0; while (i<2) alert(t[i++]['title']);
その他の回答 (3)
- babu_baboo
- ベストアンサー率51% (268/525)
これってクイズ? t0000={title:"a",id:"kin"}; t0001={title:"b",id:"gin"}; i=0; while(i<2){ c = "t000"+i alert(c); alert(window[c].title); i++ }
お礼
回答ありがとうございます。 いえいえクイズではありません。 なるほどwindowもあるのですね。
- notnot
- ベストアンサー率47% (4900/10358)
もとのプログラムを出来るだけ変えないとすると、 t0000={title:"a",id:"kin"}; t0001={title:"b",id:"gin"}; i=0; while(i<2){ c = "t000"+i alert(c); title1 = eval(c+'["title"]'); alert(title1); i++ } cは文字列なので、変数名と見なすためにはevalが必要。
お礼
回答ありがとうございます。 変数として使えるように変換するのですね。 勉強不足でした。
- yyr446
- ベストアンサー率65% (870/1330)
こおゆう事 c=[{title:"a",id:"kin"},{title:"b",id:"gin"}]; i=0; for(var i=0;i<2;i++){ eval ('var title' + i +'=c[' + i + '].title;'); alert(eval('title' + i)); } ちがう~...
お礼
回答ありがとうございます。 なるほどeval()というものを使うのですね
お礼
回答ありがとうございます。 たしかに大量にあります。 下記の方がいいのでしょうか。