webForumDet fria alternativet

leta igenom XML dokument med for loop

3 svar · 269 visningar · startad av constig

constigMedlem sedan juni 20043 inlägg
#1

på dom gamla glada dagarna då jag alltid publicerade mina flash filer i 6.0 varianten fungerande följande kod snutt utomordentligt då jag ville leta igenom ett större xml dokument efter just dom taggarna vars innehåll jag ville skriva ut i ett textfield

my_xml = new XML();
my_xml.load("book.xml");
my_xml.onLoad = function(success)
{
if(success)
{createTextField("books",1,50,50,100,200);
for(i=0;i<my_xml.childNodes.length;i++)
{
if(my_xml.childNodes[i].nodeName.toUppercase()=="BOOKS")
{
books.text += my_xml.childNodes[i].firstChild.nodeValue + "\n";
}
}
}
};

men sen jag började publicera i flash player 7.0 så funkar inte "if(my_xml.childNodes*.nodeName.toUppercase()=="BOOKS")" längre, finns det någon här som kan förklara varför för mej, kanske till och med kasta lite ljus över problemet..*

mirandirMedlem sedan maj 2003750 inlägg
#2

Därför att Flash MX 2004 alltid lägger till "this" framför om du inte anger annat(t.ex: _root). Så om du tar bort my_xml i början eller ändrar det till "this" så skall det funka.

eftersom onLoad är en "metod" till my_xml så pekar ju "this" på just my_xml.

if(this.childNodes[i].nodeName.toUppercase()=="BOOKS")

/Mirandir

constigMedlem sedan juni 20043 inlägg
#3

så här menar du?:

my_xml = new XML();
my_xml.load("book.xml");
my_xml.onLoad = function(success)
{
	if(success)
	{
		createTextField("books",1,50,50,100,200);
		for(i=0;i<this.childNodes.length;i++)
		{
			if(this.childNodes[i].nodeName.toUppercase()=="BOOKS")
			{
				books.text+=(this.childNodes[i].firstChild.nodeValue + "\n");
				trace(this.childNodes[i].firstChild.nodeValue);
			}
		}
	}
};

funkar fortfarande bara i flash player 6, i sjuan händer det ingenting

mirandirMedlem sedan maj 2003750 inlägg
#4

Skriver den ut rätt i trace() kommandot? Eller är den också "död"?

Tänk på att den förmodligen antar "this" framför books.text också. Dessutom tror jag att du måste peka createTextField på en tidslinje...

Men jag är inte 100% säker då jag inte äger MX 2004.

/Mirandir

136 ms totalt · 3 externa anrop · v20260731065814-full.7de19299
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)