Avatar billede sako Nybegynder
17. april 2006 - 23:04 Der er 6 kommentarer og
2 løsninger

XML indhold til Array

Jeg har problemer med at smide info fra et XML ind i et array - kan kun få den ene værdi vist ???

Funktion der laver mine "knapper"

doList = function(){
tf = new TextFormat();
tf.font = "Verdana";
tf.size = "10";
tf.bold = true;
for (i=0; i<menuArr.length; i++) {
    var button = this.createEmptyMovieClip("knap"+i, i);
    with(button) {
        beginFill(0xCCCCCC, 100);
        lineTo(0, 20);
        lineTo(300, 20);
        lineTo(300, 0);
        lineTo(0, 0);
        endFill();
        button._y=i*21;
        button.id=i;
        button.onRelease = function() {
            _parent.hent(id);
        }
        button.createTextField("knaptekst"+i,2,0,0,300,20);
       
        button["knaptekst"+i].text=menuArr[i];
        button["knaptekst"+i].setTextFormat(tf);
       
               
    }
  }
}

Generering af Array
System.useCodepage= true;
MY_xml = new XML();
MY_xml.ignoreWhite = true;
MY_xml.onLoad = function(success) {
        if (success) {
                loadData(MY_xml);
        }
};

MY_xml.load('xml/complex.xml');

function loadData(xmlDoc_xml) {
for (n = 0; n<xmlDoc_xml.firstChild.firstChild.childNodes.length; n++) {
menuArr = new Array();
menuArr.push(xmlDoc_xml.firstChild.firstChild.childNode [n].firstChild.nodeValue);
}
doList();
}    

XML - fil
<?xml version="1.0" encoding="iso-8859-1"?>
<extern width="350" height="495" antal="4">
<indholdsfortegnelse>
  <tekst siteno="1">tekst1</tekst>
  <tekst siteno="4">tekst2</tekst>
  <tekst siteno="6">tekst3</tekst>
  <tekst siteno="7">tekst4</tekst>
  <tekst siteno="10">tekst5</tekst>
</indholdsfortegnelse>
</extern>

Men den udskriver kun "tekst 5 " ??
Avatar billede barklund Nybegynder
17. april 2006 - 23:19 #1
Funktionen bliver først kaldt, når man rent faktisk trykker på knappen. Og når man trykker på knappen, vil værdi har variablen id så? Du er nødt til at hente variablen id fra objektet selv:

        button.onRelease = function() {
            _parent.hent(this.id);
        }

Så vil det virke som det skal :)

--
Morten Barklund
Avatar billede sako Nybegynder
17. april 2006 - 23:23 #2
min onRelease virker sådan set ok - mit problem er at der kun kommer et element i mit array - så den udskriver - kun "tekst 5" og ikke de 4 andre ?
Avatar billede sako Nybegynder
17. april 2006 - 23:28 #3
Det virker nemlig fint hvis jeg bruger nedenstående:

doList = function(){
menuArr = new Array("menupunk0","menupunkt1","menupunkt2");
tf = new TextFormat();
tf.font = "Verdana";
tf.size = "10";
osv.....

Så det er vel der hvor jeg laver mit Array det går galt ???
Avatar billede barklund Nybegynder
17. april 2006 - 23:33 #4
Oh, hvis din onRelease virker, så bruger du Flash 5 - i nyere versioner vil det ikke virke :)

Men ja, der er også en fejl i din oprettelse af det array - du opretter jo arrayet inde i løkken - flyt menuArr = new Array(); uden for løkken :)

--
Morten Barklund
Avatar billede sako Nybegynder
17. april 2006 - 23:39 #5
Lol - ja man kan stire sig blind på meget :-)

Jeg har lige et tillægsspørgsmål hvis du har tid - skal nok lige hæve points.

Vedr.
button.onRelease = function() {
_parent.hent(this.id);
}

Hvis nu jeg gerne vil have min Attribut-værdi "siteno" istedet for this.id... er den lige til at løse ?
Avatar billede barklund Nybegynder
18. april 2006 - 01:07 #6
Lav et ekstra array, eller lav dit array om til et array af objekter med menupunkt og siteno - og i din løkke hent henholdsvist menupunkt til punktet og siteno til id'et. :)
Avatar billede sako Nybegynder
18. april 2006 - 09:13 #7
Jeg takker mange gange - :-)
Avatar billede barklund Nybegynder
18. april 2006 - 10:09 #8
Tark for points :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester