Avatar billede jens_k Nybegynder
05. oktober 2009 - 09:41 Der er 3 kommentarer og
1 løsning

Tæl hvor mange elementer der er.

Hej,

Jeg sidder og roder med et lille nybegynder script, og har brug for lidt hjælp.

Jeg har en side med masse tabeller, de har alle et ID som f.eks:

slideshow1
slideshow2
slideshow3
slideshow4

Det som de allesammen har tilfælles er at de hedder "slideshow" efterfulgt af et nummer.

Antallet variere fra side til side, hvordan kan jeg finde ud af hvor mange tabeller der er på siden som hedder "slideshow" efterfulgt af et nummer?

Med venlig hilsen

Jens_K
Avatar billede ebusiness Nybegynder
05. oktober 2009 - 14:18 #1
Det kan gøres på lidt forskellige måder, fx kan du prøve at hente elementerne med document.getElementById("id her"), hvis det returnerer null i stedet for et element er det fordi elementet ikke findes.
Avatar billede Slettet bruger
05. oktober 2009 - 14:33 #2
En rigtig ubehagelig one-liner, også kaldet et quick-'n'-dirty hack:

var element, antal = 0; for (var iii = 1; eval('element = document.getElementById("' + iii + '")'; iii++) {antal++;}

Og splittet op, men ligeså quick-'n'-dirty:

var element, antal = 0;
for (var iii = 1; eval('element = document.getElementById("' + iii + '")'; iii++) {
    antal++;
}
Avatar billede TagMan101 Nybegynder
05. oktober 2009 - 15:21 #3
Man kan ligeså godt gøre det rigtigt.

Fang tabellerne: document.getElementsByTagName('table')
Løb dem igennem for at se om der står slideshow i "id".
Hvis der gør det lægger man en til tælleren.
Pænt og rent.

<html>
<head>
    <title>Titled Page</title>
<script type="text/javascript">
function getNumberOfSLideShows(){
    var numberOfSlideShows = 0;
    var tablesInPage = document.getElementsByTagName('table');
    for(var i = 0; i < tablesInPage.length; i++){
        numberOfSlideShows+= (0 <= tablesInPage[i].id.indexOf('slideshow'))?1:0;
    }
    return numberOfSlideShows;
}
</script>
</head>
<body onload="detHemmeligeTalJegVilKende = getNumberOfSLideShows(); alert('Der er ' + detHemmeligeTalJegVilKende + ' relevante tabeller!');">

        <table id="slideshow1">
        </table>
        <table id="Table2">
        </table>
        <table id="slideshow3">
        </table>
        <table id="bable4">
        </table>
        <table id="Table5">
        </table>
</body>
</html>




Hvis du pinedød vil have at det er et tal der står efterfølgende. Er den eneste ordentlige måde at gøre det på.
At erstatte "0 <= tablesInPage[i].id.indexOf('slideshow')" med et RegExp tjek.
Ellers samme sag.
Avatar billede olebole Juniormester
07. oktober 2009 - 20:45 #4
<ole>

Hvorfor ikke bare holde styr på, hvormange tabeller der er? Er der tale om et dynamisk dokument, skriver serverscriptet bare en JS-variabel ud, der fortæller, hvormange tabeller der er  ;o)

/mvh
</bole>
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