Avatar billede snakejake Nybegynder
13. september 2001 - 00:27 Der er 4 kommentarer og
2 løsninger

Hente ID fra en HTML side via javascript

Er der nogen der ved hvordan man finder alle ID navne i et HTML dokument via javascript?

Jeg er ved at rode med en træ-menu hvor jeg gerne vil have alle elementerne til at folde sig sammen, men da de ikke er nummereret fortløbende skal jeg finde deres respektive navne.

Et link til et fungerende kodeeksempel vil også være fint!

- Jakob
Avatar billede roenving Novice
13. september 2001 - 01:39 #1
I IE4+ (og ns6+) kan du bruge document.all til at finde alle html-elementer -- men vær opmærksom på, at de sidste 5-15 % er udelukket fra din funktionalitet.

Hvorfor giver du ikke (et trick fra andre omgivelser) dine elementer et identificerbart navn, f.eks. menuSnake, menuJake osv., så kan du altid bruge det i en iterering igennem dine elementer.

Sådan noget som:

function detect(){
  for(i=0;document.all.length;i++){
    alert(\'Element \'+i+\' hedder \'+document.all[i].id);
}

hth
jes
Avatar billede snakejake Nybegynder
13. september 2001 - 07:42 #2
Det lyder ikke helt tosset, men det ser ud til at \"for\" løkken løber ud over antallet af elementer. Der kommer i hvert fald en fejl selv om jeg også beder den løbe til \'length -1\'

I koden herunder skulle der kun komme alerts hvis id for et element er noget med \"indlaeg_\" - eller har jeg lavet en fejl? For der kommer en alert for hvert eneste element i dokumentet.

function detect(){
  for(i=0;document.all.length -1;i++)
  {
    if(document.all[i].id.indexOf(\'indlaeg_\'!=-1))
      alert(\'Element \'+i+\' hedder \'+document.all[i].id);
  }
}

Venlig hilsen - Jakob
Avatar billede jakoba Nybegynder
13. september 2001 - 07:53 #3
grunden til at for-løkken løber \'for langt\' er at der ikke er en korrekt betingelse i midtfeltet  document.all.length  evaluerer til et tal forskellig fra 0 og dermed altid sand. en slåfejl.
brug:
  for (i=0; document.all.length > i; i++ ){

mvh JakobA
Avatar billede jakoba Nybegynder
13. september 2001 - 08:02 #4
i din sammenligning er parameteren til funktionen  indexOf
    \'indlaeg_\'!=-1
det er en sammenligning der giver sand altid så det du reelt skriver er
    if(document.all[i].id.indexOf(\'true\'))
flyt sammenligningen ud af parameter-parentesen:
    if(document.all[i].id.indexOf(\'indlaeg_\')!=-1)

altså alt ialt:

function detect() {
  for(i=0; document.all.length>i; i++) {            // rettet betingelse
    if(document.all[i].id.indexOf(\'indlaeg_\')!=-1)  // rettet betingelse
      alert(\'Element \'+i+\' hedder \'+document.all[i].id);
  }
}

mvh JakobA
Avatar billede snakejake Nybegynder
13. september 2001 - 10:40 #5
Herligt!!

Tak for hjælpen : )

- Jakob
Avatar billede snakejake Nybegynder
13. september 2001 - 10:41 #6
Herligt!!

Tak for hjælpen : )

- Jakob
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