Avatar billede jammerlab Nybegynder
13. juni 2009 - 23:32 Der er 6 kommentarer og
1 løsning

Kombinere en array string

Hej derude...

Jeg har nogle array's som hedder folderid_1 folderid_2 folderid_3 osv... nu prøver jeg så i en for lykke at rende arrayet igennem dynamisk alt efter hvilket id der bliver sendt til funktionen altså 1-2-3.

fid er id'et jeg sender til functionen.

Følgende har jeg prøvet, men virker ikke...

for (x in folderid_+fid) {
var html = folderid_+fid[x]

for (x in 'folderid_'+fid) {
var html = 'folderid_'+fid[x]

Nogen der ved hvad jeg kan gøre?
Avatar billede thesurfer Nybegynder
13. juni 2009 - 23:35 #1
Man kunne vel fuske lidt med noget der ligner:

tmp = eval("folderid_" + fid)

for (x in tmp)
{
html = x
}

eller

for(i = 0, len=tmp.length; i < len; i++)
{
html = tmp[i];
}


Men jeg forstår ikke helt dit eksempel.. for i dit eksempel bliver værdien af "html" altid overskrevet, hvilket betyder at "html" til sidst vil indeholde værdier af det sidste index i arrayen.. ? :-)
Avatar billede jammerlab Nybegynder
13. juni 2009 - 23:43 #2
Bingo! Lige det jeg skulle bruge :) det giver fin mening hvis jeg havde givet hele koden med hehe...

            if(html) {
            var html = html + ' ' + tmp[x];
        } else {
            var html = tmp[x];
        }

Smid et svar tak! :)
Avatar billede thesurfer Nybegynder
13. juni 2009 - 23:53 #3
Hmm.. men du redefinerer jo variablen igen, når du bruger "var html"..?

Du burde vel gøre sådan her:

var html = "";
for(..)
{
  if (..)
  {
      html += tmp[x];
  } else {
      html = tmp[x];
  }
}


- Svar.
Avatar billede jammerlab Nybegynder
13. juni 2009 - 23:56 #4
Sandt nok :) endnu engang tak for hjælpen.
Avatar billede thesurfer Nybegynder
14. juni 2009 - 00:12 #5
Det var så lidt :-)

Takker for points.
Avatar billede thesurfer Nybegynder
14. juni 2009 - 00:20 #6
Den "rigtige" måde at gøre det på, er vel nok noget i stil med:

id = 5; // eksempel hvor id er lig 5

// man kun evt bruge "switch" i stedet for if-else-sætninger

var html = "";
if (id == 2) html = getHTML(folderid2)
if (id == 5) html = getHTML(folderid5)
alert("html: " + html);

og funktionen:

function getHTML(tmp)
{

// da denne er defineret inde i funktionen, påvirker den ikke den globale variabel, som også hedder "html":

var html = "";
for(..)
{

... osv ...

}

return html;

}


Men det kræver at man hele tiden opdaterer betingelserne for kaldene.. altså check på om Id er lig 3, 5, osv..

Man kunne også bare lave en funktion der ligner denne her:

function getHTML(id)
{

var tmp = eval("folderid_" + fid)
if (tmp)
{

var html = "";

for(..)
{
  if (..)
  {
      html += tmp[x];
  } else {
      html = tmp[x];
  }
}

}
return html;

} else {
alert("Arrayen med id '" + id + "' findes ikke!");
return "fejl";
}

Så kan man kalde funktionen med:

var html = getHTML(5);
Avatar billede thesurfer Nybegynder
14. juni 2009 - 00:22 #7
Jeg kan se at jeg har glemt:

var tmp = eval("folderid_" + fid)

under den først funktion, som ser sådan ud:

function getHTML(tmp)
{

// da denne er defineret inde i funktionen, påvirker den ikke den globale variabel, som også hedder "html":


Det er jo lidt sent lige nu.. :)
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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