Avatar billede nicklasb Nybegynder
05. september 2004 - 16:12 Der er 11 kommentarer og
2 løsninger

Globale variabler samt indsættelse af data i array

Hej,

Jeg er igang med en side, der kræver lidt JavaScript, idet det ellers ville kræve en stor bunke reloads, og har derfor sat mig for at lære det.
Har dog lige to 'problemer' jeg godt kunne tænke mig løst / forklaret!

Problemstilling 1:
Kan følgende skabe problemer?

// ---------------------------------
function foo(bar) {
    // brug af globalvar
}

var globalvar;

foo('kald til function her!');
// ---------------------------------

Altså at skrive brugen af den globale variabel ind i en funktion før variablen sættes, eller læses funktionen først i det øjeblik den bliver brugt?


Problemstilling 2:

Hvordan skrives dette lettere (havde tænkt mig at bruge php til udfyldelse, men kunne man slippe for en masse linier + den slaviske nummerering ville det jo være toppen!

//----------------------------------
cate            = new Array();

cate[0]          = new categoryAdd('kat1', 'Kategori 1');
cate[1]          = new categoryAdd('kat2', 'Kategori 2');
cate[2]          = new categoryAdd('kat3', 'Kategori 3');
// ---------------------------------

Hvis det kan gøres endnu lettere er categoryAdd tidligere agivet til:

//----------------------------------
function categoryAdd(categoryId, categoryName) {
    this.categoryId  = categoryId;
    this.categoryName = categoryName;
    return this;
}
// ---------------------------------

På forhånd mange tusinde tak!
/Nicklas B.
Avatar billede superdude Nybegynder
05. september 2004 - 21:06 #1
Funktionen læses først når den bliver brugt vil jeg mene.

Du kan vel bare lave kategorierne med et loop:

cate = new Array()

for(var i=1; i<3; i++)
  cate.push(new categoryAdd('kat'+i, 'Kategori '+i));
Avatar billede superdude Nybegynder
05. september 2004 - 21:07 #2
<4 i for løkken naturligvis ;-)
Avatar billede nicklasb Nybegynder
05. september 2004 - 22:00 #3
tror ikke helt du har forstået hvad det er jeg vil!

Jeg vil blot via et php-script smække data ind i javascript-arrayet. Det jeg søger er så den letteste måde hertil.
Ved dog ikke hvordan man får lavet mine tredeminsionelle arrays uden at gøre det på den måde jeg har gjort det?!

og vil også gerne have lidt mere end "meninger" omkring det med funktionen.. eventuelt noget underbyggelse?
Avatar billede superdude Nybegynder
05. september 2004 - 23:03 #4
Hvorfor laver du ikke bare en løkke i php og echo'er en linie javascript ud for hvert gennemløb? Har sikkert misforstået dig igen...
Avatar billede olebole Juniormester
06. september 2004 - 19:42 #5
<ole>

Dit første spm. fatter jeg ikke en hat af  :)

Det andet kan vel skrives sådan:

var cate = new Array();
for ( i=0; i<23; i++ ) {
    cate[i] = new categoryAdd( "kat"+(i+1), "Kategori "+(i+1) );
}

/mvh
</bole>
Avatar billede olebole Juniormester
06. september 2004 - 19:45 #6
superdude >> jo mindre, du skriver ud på serveren, jo mindre belaster du den - og jo mindre skal brugeren hente ned. Ofte er det bedre at lade klientmaskinen udføre arbejdet ... den står alligevel og strutter af ubrugt CPU-kraft og masser af ubrugte MB RAM  ;o)
Avatar billede superdude Nybegynder
06. september 2004 - 22:08 #7
olebole >> ja du har naturligvis ret med server belastningen, men jeg forstod det som om han efterlyser et php script til at fylde data i js array'et.

Jeg kan ikke umiddelbart se nogen forskel på din løkke-løsning og den jeg postede som min første kommentar, der blev kasseret...?

Men hvad ved jeg ;-)
Avatar billede olebole Juniormester
06. september 2004 - 22:20 #8
*LooL* jeg havde slet ikke set din første kommentar ... nej, ingen forskel  :D

Så forstår jeg heller ikke anden del af spørgsmålet. Men der kommer formodentlig en forklaring  :)
Avatar billede roenving Novice
07. september 2004 - 02:29 #9
-- og hvis det bare er et flerdimensionelt array nicklas har brug for, kan han jo bare:

//----------------------------------
cate = new Array();

cate[0] = ['kat1', 'Kategori 1'];
cate[1] = ['kat2', 'Kategori 2'];
cate[2] = ['kat3', 'Kategori 3'];
// ---------------------------------

-- og i en typisk situation, hvis man hiver data ud af en database bliver det til sådan noget lignende:

//----------------------------------
cate = new Array();
<?
/*Hent data fra den relevante tabel*/

/*start en løkke, hvor alle fundne poster hentes*/
?>
cate[cate.length] = ['<?echo $kategorinavn?>', '<?echo $kategorititel?>'];
<?
/*loop til næste post*/
?>
// ---------------------------------

-- og så har superdude iøvrigt ret i sin første formodning !-)
Avatar billede nicklasb Nybegynder
26. september 2004 - 16:42 #10
jeg undskylder mange gange jeg ikke har vendt tilbage tidligere, men har ikke været online så meget på det sidste.

Superdude og Roenving -> lig venligst et svar!
Avatar billede roenving Novice
26. september 2004 - 16:50 #11
Velbekomme '-)
Avatar billede superdude Nybegynder
26. september 2004 - 18:58 #12
Svar...
Avatar billede roenving Novice
26. september 2004 - 19:21 #13
-- og tak for point ;~}
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