Avatar billede claus_w Nybegynder
18. november 2001 - 18:41 Der er 4 kommentarer og
1 løsning

Tæl <div id=\"tab1-?\">

I mit html har jeg en del lag som kunne se således ud:

<div class=\"lag\" id=\"Lag1-1\">Nr. 1 i gruppe 1</div>
<div class=\"lag\" id=\"Lag1-2\">Nr. 2 i gruppe 1</div>
<div class=\"lag\" id=\"Lag2-1\">Nr. 1 i gruppe 2</div>
<div class=\"lag\" id=\"Lag2-2\">Nr. 2 i gruppe 2</div>
<div class=\"lag\" id=\"Lag2-3\">Nr. 3 i gruppe 2</div>
<div class=\"lag\" id=\"Lag2-4\">Nr. 4 i gruppe 2</div>
<div class=\"lag\" id=\"Lag3-1\">Nr. 1 i gruppe 3</div>

Disse lag er indelt i grupper, og som i kan se beskrive id\'et hvilken nummer det er i gruppen og hvilken gruppe laget tilhøre.

Jeg har en variabel som indeholder antallet af grupper.

Det jeg ønsker er et stykke javascript som tæller hvor mange lag/div\'s der er i hver af disse grupper. Outputtet skulle gerne være en array således at:

AntalLag[1] = 2
AntalLag[2] = 4
AntalLag[3] = 1

Jeg kunne forstille mig et for-loop men ved ikke hvordan man tjekke et specifikt object findes i html\'en..

På forhånd tak for hjælpen.
Avatar billede Slettet bruger
18. november 2001 - 19:13 #1
<script>
nr1 = 1;
nr2 = 1;
AntalLag = new Array();

function saetIgang() {
if (document.getElementById) nyDomTL();
else if (document.all) ieTL();
else if (document.layers) nsTL();
}

function nyDomTL() {
lag = \"Lag\" + nr1 + \"-\" + nr2;
if (document.getElementById(lag)) {
AntalLag[nr1] = nr2;
nr2++;
}
else {
if (nr2 == 1) return;
nr1++;
nr2 = 1;
}
nyDomTL();
}

function ieTL() {
lag = \"Lag\" + nr1 + \"-\" + nr2;
if (document.all[lag]) {
AntalLag[nr1] = nr2;
nr2++;
}
else {
if (nr2 == 1) return;
nr1++;
nr2 = 1;
}
ieTL();
}

function nsTL() {
lag = \"Lag\" + nr1 + \"-\" + nr2;
if (document[lag]) {
AntalLag[nr1] = nr2;
nr2++;
}
else {
if (nr2 == 1) return;
nr1++;
nr2 = 1;
}
nsTL();
}
</script>

Så skal du bare kalde funktionen saetIgang() EFTER at lagene er indlæst, fx ved body onLoad!
Avatar billede Slettet bruger
18. november 2001 - 19:19 #2
Testet i IE5 og NS6.2, men det er jo desværre kun to browsere med den nye DOM, så du må selv gennemteste scriptet eller få nogen til det! :)
Avatar billede Slettet bruger
18. november 2001 - 19:25 #3
Dette er noget kortere:

<script>
nr1 = 1;
nr2 = 1;
AntalLag = new Array();

function tjekLag(laget) {
if (document.getElementById) return document.getElementById(laget);
else if (document.all) return document.all[laget];
else if (document.layers) return document[laget];
}

function taelLag() {
lag = \"Lag\" + nr1 + \"-\" + nr2;
if (tjekLag(lag)) {
AntalLag[nr1] = nr2;
nr2++;
}
else {
if (nr2 == 1) return;
nr1++;
nr2 = 1;
}
taelLag();
}
</script>

Kaldes så med taelLag() istedet!
Dette er dog også kun testet i IE5 og NS6.2, men jeg er næsten 100% på, at det også virker i IE4!
Avatar billede claus_w Nybegynder
18. november 2001 - 19:48 #4
nice, det virker..

Tak skal du ha..
Avatar billede Slettet bruger
18. november 2001 - 19:50 #5
No problemo!
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