

こんばんは。よろしくお願いいたします。
AS2,以下のスクリプトについて
import mx.xpath.XPathAPI;
abc=new Array();
myXML= new XML();
myXML.ignoreWhite = true;
myXML.onLoad =function (){
var XPathString:String = "/data/abc/*";
//条件を満たすノードを配列に格納
abc = XPathAPI.selectNodeList(this.firstChild, XPathString);
textarea1.text=abc[0]; //(1)
}
myXML.load("data.xml");
textarea2.text=abc[0]; //(2)
条件を満たすノードを配列abcに格納したいのですが、(1)のabcには対象の
ノードが格納されるのに対して、(2)のabcには何も格納されていません。
(2)のabcでも対象のノードを格納するにはどのようにしたらよいのでしょうか?
No.2ベストアンサー
- 回答日時:
データなどがないので何にも検証していませんが。
単純に 「data.xml」 がロードされる前に
textarea2.text=abc[0]; //(2)
を実行しているので,
配列 abc は空のままであるため (2)のabc には何も格納されないだけだと思います。
textarea1.text=abc[0]; //(1)
の方は,
myXML.onLoad =function (){ } 内で実行されます。
つまり,
myXML.onLoad(=myXML に何かがロードされた)時に実行されます。
ですから,配列 abc に何かのデータが入るので,
textarea1.text には何かが表示されるのだと思います。
単純に,こうすれば良いだけだと思いますが↓。
abc = XPathAPI.selectNodeList(this.firstChild, XPathString);
textarea1.text=abc[0]; //(1)
textarea2.text=abc[0]; //(2)
}
======================
// myXML に何かがロードされたときに 動作A を実行
myXML.onLoad = function(){
動作A();
}
コレ↑ と コレ↓ は同じようなことです。
// myButton がクリックされたときに 動作A を実行
myButton.onRelease = function(){
動作A();
}
上は,
XML がロードされたときにはじめて実行する動作を定義しているだけで,
XMLがロードされない限り実行されません(ロード失敗でも実行されますが)。
いつXMLがロードされるかなど知りません。
回線の状況やファイル容量などによって全く変わります。
とにかくXMLがロードされたときにはじめて 動作A が実行されます。
下も,
ボタンがクリックされたときにはじめて実行する動作を定義しているだけで,
ボタンがクリックされない限り実行されません。
いつボタンがクリックされるかなど知りません。
Flashを閲覧した人のボタンの存在認識やクリックしたい気分によって全く変わります。
とにかくボタンがクリックされたときにはじめて 動作A が実行されます。
長く書きましたが,
結局 #1 の方の書かれていらっしゃることと結論は同じです。
No.1
- 回答日時:
なぜ(2)の記述がonLoad関数の外にあるのかはわかりませんが、(2)の時点では、XMLが読み込まれる前に参照していることになりますので、(2)の記述をonLoad関数の中に記述する必要があります。
____________________
myXML.onLoad =function (){
var XPathString:String = "/data/abc/*";
//条件を満たすノードを配列に格納
abc = XPathAPI.selectNodeList(this.firstChild, XPathString);
textarea1.text=abc[0]; //(1)
textarea2.text=abc[0]; //(2)
}
myXML.load("data.xml");
____________________
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 以下のVBAで該当文字列の前後に付与したい。 例 前に付与 abc ユーザーID 12345 後に付 3 2022/04/19 21:50
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/08 09:05
- 数学 交代式と整数問題 17 2023/03/06 16:52
- その他(開発・運用・管理) 【至急】.htaccessによるディレクトリ単位でのリダイレクト 2 2023/08/10 13:46
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/03/10 08:51
- Visual Basic(VBA) Excel VBAでAA(BBB) → BBB.AA に置換したい 2 2022/10/30 13:59
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/03/09 10:07
- 数学 数学の質問です。 ABCの内接円の半径が8であり, 辺BCがその接点により長さ 16 と12に分けら 2 2023/07/05 18:04
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
配列の要素番号を取得するには?
-
【数字ランダム】計算問題ラン...
-
onload時の変数の有効範囲について
-
2次元配列 ソート
-
FLASHでXMLを読み込んだときに...
-
DataGridでCTRLキーを押さずに...
-
Vba 配列の中の特定文字列の位...
-
変な質問ですみません、n番目の...
-
即時関数で
-
sleepの時間の値に変数を!
-
LRESULTとHRESULT
-
VB6でユーザー定義型がNothing...
-
アクションスクリプトを簡素化...
-
c++ cmathとmath.h
-
三辺の長さから角度を求めたい...
-
インスタンスをまとめて生成?
-
全国のイベント情報
-
【奇数・偶数のときの処理】
-
AS3.0でボタン処理をまとめて書...
-
エラー(型が一致しません。)...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
配列の要素番号を取得するには?
-
VB.NET の配列の要素数
-
重複しない乱数の生成
-
Vba 配列の中の特定文字列の位...
-
IDの自動採番について
-
VBでボタンを押すと画像をラン...
-
変な質問ですみません、n番目の...
-
ActionScript3で乱数を取得しな...
-
[Objective-c]多次元配列のアク...
-
データ構造のテキスト保存につ...
-
複数の変数宣言を、for文で一気...
-
重複しない乱数を作り配列に入...
-
配列操作
-
String.prototype.split2d 理...
-
ユーザー定義関数が呼び出せない
-
Action Script 2.0 配列の比較
-
【ActionScript】配列の昇順降...
-
ActionScriptで配列をクリアす...
-
VB6 複数行のテキストをリスト...
-
アクションスクリプト for~in時
おすすめ情報