davyvh
%Europe/Berlin %857 %2005, 21:34
Hoy,
Kheb een vrij ingewikkeld probleempje met arrays die ik wil opstellen aan de hand van een XML (http://www.davyvh.be/street-racers/menu.xml).
In de XML zie in de eerste childNodes zo iets: <menu name="titel" category="guest">
De titel wordt hieruit gehaald en na die titel staat category. Door middel van die category wordt er onderscheid gemaakt tussen de gebruikers en zal de menu die ik wil verkrijgen er ook anders uitzien. De category kan guest, user of guestAndUser zijn. Het lukt me al om 2 arrays op te stellen gesorteerd op die category. In die array staat dus de titel en de nummer van de childNode.
Hiervoor allemaal geen probleem, maar nu wil ik een submenu bouwen na het klikken op zo'n item van de guest of user array. In die childNodes <menu ...> </menu> zit dus de informatie voor die submenu. Ik zou dus voor iedere childNode een array willen verkrijgen met daarin de informatie voor de sub.
Hieronder het script dat ik al heb:
var xml = "http://www.davyvh.be/street-racers/menu.xml";
_global.arrayGuest = new Array();
_global.arrayUser = new Array();
_global.arraySubs = new Array();
var myMenu:XML = new XML();
myMenu.ignoreWhite = true;
myMenu.onLoad = onLoadHandler;
function onLoadHandler()
{
var root = this.firstChild;
for(var i=0; i<root.childNodes.length; i++)
{
if(root.childNodes[i].attributes.category=="guest" || root.childNodes[i].attributes.category=="guestAndUser")
{
//als de cathegorie guest of guestAndUser is, push dan in de array.
arrayGuest.push(new Array(root.childNodes[i].attributes.name,root.childNodes[i].childNodes[0].firstChild.nodeValue, i));
}else if(root.childNodes[i].attributes.category=="user" || root.childNodes[i].attributes.category=="guestAndUser")
{
arrayUser.push(new Array(root.childNodes[i].attributes.name,root.childNodes[i].childNodes[0].firstChild.nodeValue, i));
}
}
//in onderstaande functie wil ik de subArrays aanmaken, dit mag ook op een andere manier gedaan worden als je er een weet!
//onderstaande functie is totaal verkeerd, maar er staat wel nuttige informatie in die je nog kan gebruiken
function buildSubArray(array)
{
for(var j=0; j<array.length; j++)
{
for(var k=0; k<array[j][2]; k++)
{
//array[j][2] is de rij met daarin de nummers van de childNodes die worden weergegeven in de nodige array
this["arraySubs"+k].push(root.childNodes[k]);
//trace(k);
//trace(root.childNodes[nr].childNodes[array[j].length].attributes.name);
}
}
}
//hier worden de arrays gestart. Als voorbeeld heb ik arrayGuest gekozen om de submenu's op te stellen, later wordt dit dynamisch adhv een login.
buildMenu(arrayGuest);
buildSubArray(arrayGuest);
}
myMenu.load(xml);
Als je mij hiermé kan helpen, RESPECT...
Alvast erg bedankt,
Davy
Kheb een vrij ingewikkeld probleempje met arrays die ik wil opstellen aan de hand van een XML (http://www.davyvh.be/street-racers/menu.xml).
In de XML zie in de eerste childNodes zo iets: <menu name="titel" category="guest">
De titel wordt hieruit gehaald en na die titel staat category. Door middel van die category wordt er onderscheid gemaakt tussen de gebruikers en zal de menu die ik wil verkrijgen er ook anders uitzien. De category kan guest, user of guestAndUser zijn. Het lukt me al om 2 arrays op te stellen gesorteerd op die category. In die array staat dus de titel en de nummer van de childNode.
Hiervoor allemaal geen probleem, maar nu wil ik een submenu bouwen na het klikken op zo'n item van de guest of user array. In die childNodes <menu ...> </menu> zit dus de informatie voor die submenu. Ik zou dus voor iedere childNode een array willen verkrijgen met daarin de informatie voor de sub.
Hieronder het script dat ik al heb:
var xml = "http://www.davyvh.be/street-racers/menu.xml";
_global.arrayGuest = new Array();
_global.arrayUser = new Array();
_global.arraySubs = new Array();
var myMenu:XML = new XML();
myMenu.ignoreWhite = true;
myMenu.onLoad = onLoadHandler;
function onLoadHandler()
{
var root = this.firstChild;
for(var i=0; i<root.childNodes.length; i++)
{
if(root.childNodes[i].attributes.category=="guest" || root.childNodes[i].attributes.category=="guestAndUser")
{
//als de cathegorie guest of guestAndUser is, push dan in de array.
arrayGuest.push(new Array(root.childNodes[i].attributes.name,root.childNodes[i].childNodes[0].firstChild.nodeValue, i));
}else if(root.childNodes[i].attributes.category=="user" || root.childNodes[i].attributes.category=="guestAndUser")
{
arrayUser.push(new Array(root.childNodes[i].attributes.name,root.childNodes[i].childNodes[0].firstChild.nodeValue, i));
}
}
//in onderstaande functie wil ik de subArrays aanmaken, dit mag ook op een andere manier gedaan worden als je er een weet!
//onderstaande functie is totaal verkeerd, maar er staat wel nuttige informatie in die je nog kan gebruiken
function buildSubArray(array)
{
for(var j=0; j<array.length; j++)
{
for(var k=0; k<array[j][2]; k++)
{
//array[j][2] is de rij met daarin de nummers van de childNodes die worden weergegeven in de nodige array
this["arraySubs"+k].push(root.childNodes[k]);
//trace(k);
//trace(root.childNodes[nr].childNodes[array[j].length].attributes.name);
}
}
}
//hier worden de arrays gestart. Als voorbeeld heb ik arrayGuest gekozen om de submenu's op te stellen, later wordt dit dynamisch adhv een login.
buildMenu(arrayGuest);
buildSubArray(arrayGuest);
}
myMenu.load(xml);
Als je mij hiermé kan helpen, RESPECT...
Alvast erg bedankt,
Davy