電子書籍の厳選無料作品が豊富!

HTMLから渡された全てのパラメータの

「変数名」「値」

を取得したいのです。

そこでひっかかっている条件があり
「呼ばれる度にパラメータの数、名前が違う」
という事です。


通常、変数名がわかっている場合は

_level0.変数名

で値の取得ができるのですが
変数名がわからない事には
どうやってもアクセスができないでしょうか?

入力側でパラメータを

test.swf?key0=aaa&value0=111&key1=bbb&value1=222&key2=ccc&value2=333・・・

などと変数名をあらかじめ決めておけば
FLASH内部でfor文を使用し、取得できそうなのですが
極力避けたいと思っています。


根本的に何か違うような気もするのですが
アドバイスを頂けると助かります。

===============
動作環境
Windows XP
FLASH8
ActionScript2.0
IE6
===============

A 回答 (1件)

for..in 文 でなんとかならないでしょうか。



Flashドキュメンテーション
for..in ステートメント
http://livedocs.adobe.com/flash/8_jp/main/000018 …

Flashドキュメンテーション
typeof 演算子
http://livedocs.adobe.com/flash/8_jp/main/000018 …


---例-----------------------
key0 = "aaa";
value0 = 111;
for (name in _root) {
if (typeof (_root[name]) == "string") {
trace(name+"="+_root[name]);
}
if (typeof (_root[name]) == "number") {
trace(name+"="+_root[name]);
}
}
---------------------------

変数名の方は,for in文 の in の前の 変数名 で取れますし,
その値はその変数名で取れます。

for..in 文 の実行順序は保証されていません。
また,普通の for文 よりも実行速度が若干遅くなりますので,大量のデータを処理する場合はなるべく,普通の for文 を使う方が良しとされています。
    • good
    • 0
この回答へのお礼

ありがとうございます!

for(○○○ in オブジェクト)
で、オブジェクトが持つプロパティの数だけループしてくれるようですね。

実行速度が遅いという事ですが、個人で使用する分には問題ないかなと感じました。

forinは使い方がよく理解できず、敬遠しがちだったのですが
用途によっては便利ですね。

だいぶ強引ですが、悩んだ結果、こういう考え方が思いつきました。
==========================================================
/* 自分自身が呼ばれた際のURLを取得 */
level0_str = new String( _level0._url );

/* 「swf?」以降の文字列を取得 */
var tmp:String = level0_str.slice( level0_str.indexOf("swf?", level0_str) + 4 );

/* 「変数名=値」という文字列を取得 */
var url:Array = tmp.split("&");

var Argument = new Array( url.length );

/* 「Argument[i][0] = 変数名 */
/* 「Argument[i][1] = 値 */
for( var i = 0; i < url.length; i++ ){

Argument[ i ] = url[ i ].split( "=");

}

==========================================================

上記の方法で、ひとまず変数名と値を別々に取得する事ができました。
要修正な気がしますが・・。

お礼日時:2007/09/12 16:31

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