Avatar billede pedepede Nybegynder
04. september 2003 - 12:23 Der er 7 kommentarer og
1 løsning

Problemer med getElementById

Hvordan kan man løbe alle elements igennem, og udføre en bestemt handling på dem? Indtil videre har jeg gjort sådan:
        if(document.getElementById("menupunkt1")) {document.getElementById("menupunkt1").className = "fagNormalmenu"}
        if(document.getElementById("menupunkt2")) {document.getElementById("menupunkt2").className = "fagNormalmenu"}
        if(document.getElementById("menupunkt3")) {document.getElementById("menupunkt3").className = "fagNormalmenu"}
        if(document.getElementById("menupunkt4")) {document.getElementById("menupunkt4").className = "fagNormalmenu"}

Da jeg menupunkterne bliver dannet dynamisk. Det er altså nødvendigt at checke om de eksisterer for at undgå fejl.

Der må være en smartere måde at gøre det på???

Mvh
Peter
Avatar billede pedepede Nybegynder
04. september 2003 - 12:25 #1
Der skulle naturligvis stå ...Da menupunkterne bliver dannet dynamisk.
Avatar billede erikjacobsen Ekspert
04. september 2003 - 12:57 #2
Du kunne huske antallet i en variabel

  for (i=1;i<=antallet;i++) {
    ...getElementById("menupunkt"+i)...
Avatar billede pedepede Nybegynder
04. september 2003 - 13:17 #3
Men antallet varierer! Det bliver lavet dynamisk, så det kan ikke fastlægges fra starten. Jeg prøvede som nødløsning med en for-løkke, som den du har lavet, med antal-variablen var set meget højt, men fik en fejl for

getElementById("menupunkt"+i)

Jeg tror ikke man kan skrive det på den måde?!??
Avatar billede bamzen Nybegynder
04. september 2003 - 14:04 #4
du kan lege med den for løkke

og så skrive noget med

var currentCount = 0
function runThrough(){
if(document.getElementById('menupunkt'+currentCount+1)){
do whatever
currentCount++
runThrough()
return true;
}
runThrough()
Avatar billede erikjacobsen Ekspert
04. september 2003 - 14:07 #5
Ja, det bliver lavet dynamisk - og netop derfor kan det tælles op:

  antallet=0;

og så hver gang der blivet lavet en menu:

  antallet++;
Avatar billede pedepede Nybegynder
04. september 2003 - 14:32 #6
ja, ok... Som koden er nu skal antalvariablen sættes inden der bliver talt op. Men det tror jeg godt jeg kan komme omkring.
Er i sikre på, at syntaxen er gangbar i

for (i=1;i<=antallet;i++) {
    ...getElementById("menupunkt"+i)...

Det virker nemlig ikke for mig!
Avatar billede bamzen Nybegynder
04. september 2003 - 14:38 #7
ja, den er gangbar ;-)
Avatar billede pedepede Nybegynder
04. september 2003 - 17:15 #8
Jeps, minsandten om jeg ikke havde f**et det op...
I får 15 point hver for den fremragende indsats, ok? Hvis du lige gider svare, ErikJ
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