Avatar billede netro Nybegynder
05. september 2006 - 03:14 Der er 7 kommentarer og
1 løsning

Tjekke navn på alle elementer på en side

Følgende løber alle elementer på en side i gennem og tjekker navnet. Jeg skal have fat i dem, der starter med "edit_", men jeg ved ikke, hvad der står bagefter.

elem = document.all;
for(i = 0; elem.length > i; i++)
  if(elem[i].id.substring(0, 5) == 'edit_')
      elem[i].style.display = 'none';

Det fungerer, men er der ikke en mindre ressourcekrævende måde at gøre det på? Løkken løber knap 4000 gange, og det giver en lille - men mærkbar - forsinkelse.
Avatar billede fennec Nybegynder
05. september 2006 - 08:31 #1
Du kan evt sætte mængden lidt ned hvis du kun løber din forms elementer igennem:

elem = document.DinForm.elements
Avatar billede fennec Nybegynder
05. september 2006 - 08:33 #2
Eller på tag navnet:
elem = document.getElementsByTagName("INPUT");
elem = document.getElementsByTagName("TD");
elem = document.getElementsByTagName("DIV");

eller hvad det nu er for en type.
Avatar billede olebole Juniormester
05. september 2006 - 10:10 #3
<ole>

document.all er kun understøttet i IE (og Opera, når den tror, den er en IE). Den korrekte syntaks er:
    elem = document.getElementsByTagName("*");

- hvis du skal have fat i alle elementer. I øvrigt skal tag-names altid skrives med småt i getElementsByTagName  ;o)

/mvh
</bole>
Avatar billede fennec Nybegynder
05. september 2006 - 10:26 #4
Så har jeg også lært noget i dag...
Tak for den rettelse angående små bogstaver i getElementsByTagName. Den er hermed gemt i hukommelsen :o)
Avatar billede fennec Nybegynder
05. september 2006 - 10:29 #5
Men bare for at afklar lidt af problematikken. Så kan du ikke undgå dit loop. Det eneste du kan gøre et at nedsætte mængden af elementer, som den skal gennemløbe.

Hvis du kan vise os et udsnit af din kode, kan vi evt hjælpe dig med at nedsætte mængden.
Avatar billede olebole Juniormester
05. september 2006 - 13:04 #6
Du kan også indsnævre på følgende måde:
    elem = document.getElementById("mitDiv").getElementsByTagName("*");

- som giver alle elementer under et bestemt div. Ønsker du kun nogle bestemte elementer under et div, erstatter du naturligvis blot '*' med det relevante tagName  :)
Avatar billede netro Nybegynder
05. september 2006 - 23:41 #7
document.getElementsByTagName("div") var en god løsning. Nu går det meget hurtigt. Tak til jer og læg bare et svar, fennec.
Avatar billede fennec Nybegynder
06. september 2006 - 08:13 #8
.o) <-- One Eyed Jack
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