0

私は奇妙な問題を抱えています。

「静的」配列でindexOfを実行しようとすると、xmlが入力された配列で同じことを実行すると、常に結果= -1が得られます

静的な方法

var myarray:Array = new Array("Pub Pepsi","Shadow E-Bike","Icon Air Craft","Test","La page 4","La page 5","La page 6","La page 7");
var myresult:* = myarray.indexOf("Icon Air Craft");
trace(myresult);
// I get 2 as result so it works

動的な方法 (xml から)

var Monthpath:String = "juin";
var XMLpathUrl:String = "http://www.omagazine.fr/editions/2011/" + Monthpath + "/obook_content.xml.php";
var xml:XML;
var xmlLoader:URLLoader = new URLLoader();
var myarray:Array = new Array();

xmlLoader.addEventListener(Event.COMPLETE, xmlLoaded);

function xmlLoaded(event:Event):void
{
    xmlLoader.removeEventListener(Event.COMPLETE, xmlLoaded);
    xmlLoader.removeEventListener(IOErrorEvent.IO_ERROR, xmlError);

    xml = new XML(event.target.data);

    for (var i in xml.pages.page)
    {
        myarray.push(xml.pages.page[i].@ga);
    }

    var myresult:* = myarray.indexOf("Icon Air Craft");
    trace(myresult);
    //-------------------------------------
    // I get -1 as result!!!! Why????
    //-------------------------------------
}

xmlLoader.addEventListener(IOErrorEvent.IO_ERROR, xmlError);

function xmlError(event:IOError):void
{
    trace("Error");
}
xmlLoader.load(new URLRequest(XMLpathUrl));
4

1 に答える 1

3

XML文字列ではなく、オブジェクトを配列にプッシュしています。.toString()属性で使用する場合、これは機能するはずです。

for (var i in xml.pages.page)
{
    myarray.push(xml.pages.page[i].@ga.toString());
}

var myresult:* = myarray.indexOf("Icon Air Craft");
trace(myresult);
于 2011-06-22T15:30:03.523 に答える