ids zählen?

con-f-use

Erfahrenes Mitglied
Hallo zusammen,

ich habe ein HTML-Dokument in dem mehere divs (Anzahl variiert) wild verstreut sind. Ich möchte die divs per JS in einer Schleife abarbeiten, dazu muss ich aber wissen, wieviele es sind. Ihre ids laufen alle nach dem selben Schema "x0", "x1", "x2", usw. Sie fangen auch immer bei 0 an und es gibt immer mindestens ein div.
Also z.B.
HTML:
<div id="x0">(...)</div>
   <p><div id="x1"></div></p>
   (...)
   <div id="x2"><table><td><tr>(...)</tr></td></tabel></div>
   <div id="x3"><div id="x4">(...)</div></div>
    <center><div id="x5">(...)</div></center>
 usw. (wie gesagt sind wild im Document zerstreut)
Wie kann ich jetzt die divs zählen? Damit ich sie über ne Schleife wie dieser hier ansprechen kann:
HTML:
for(i=0;i<divAnzahl;i++) {
  	document.getElementById('x'+i).style.visibility='none';
  }
  Ist jetzt nur ein Beispiel

Ich hoffe ihr könnt mir helfen, es ist einigermaßen dringend.
Danke!
 
Zuletzt bearbeitet:
Code:
<script type="text/javascript">
<!--
function zaehle(strAttr,strTag,strExp)
{
c=0;

for(i=0;i<document.getElementsByTagName(strTag.toUpperCase()).length;++i)
    {
        if(String(eval('document.getElementsByTagName(strTag)[i].'+strAttr)).match(new RegExp('^'+strExp,'i')))
            {
                c++;
            }
    }
return c;
}
//-->
</script>

Die Funktion erwartet als Parameter:
  • zu prüfendes Attribut
  • zu überprüfende Elemente
  • regulärer Ausdruck, gegen den geprüft werden soll(Escape-Zeichen müssen dort doppelt notiert werden)

in deinem Fall wärte bspw. der Aufruf:
Code:
zaehle('id','div','^x\\d$')

In deinem Fall wird das aber nicht viel weiterhelfen, wenn du weisst, wieviele es davon gibt... da es keinen Array gibt, auf den du anhand ihrer ID zugreifen könntest.

In deiner Schleife müsstest du also... wie in meiner Funktion, die Elemente anhand des Tagnamen durchgehen, und wenn die ID übereinstimmt, Weiteres veranlassen.(müsstest da eigentlich das c++ nur durch deine eigene Anweisung ersetzen)
 
Vielen Dank. Das war wieder mal genau, was ich brauchte.

Eins noch am Rande:
In deinem Fall wird das aber nicht viel weiterhelfen, wenn du weisst, wieviele es davon gibt... da es keinen Array gibt, auf den du anhand ihrer ID zugreifen könntest.

In deiner Schleife müsstest du also... wie in meiner Funktion, die Elemente anhand des Tagnamen durchgehen, und wenn die ID übereinstimmt, Weiteres veranlassen.(müsstest da eigentlich das c++ nur durch deine eigene Anweisung ersetzen)
Ne qualifizierte Frage: HÄÄÄ? *grins*
Also wenn du dir die Schleife die ich gepostet hab mal anschaust bringt es mir sehr wohl was, wenn ich weiß wie viele es sind. Jetzt funktioniert die Schleife nämlich und ich kann jedes einzelne div innerhalb der Schleife ansprechen. Dank dir funktioniert auch alles so, wie es soll.
 
Und wie kann ich nach Namen zählen
Also wenn ich die anzahl der Namen brauche, wieviele indexe zum beispiel die var1 hat
ist das dann :

document.getElementByName('var1').style.visibility='none';
 
Zurück