kris: wie ist die position meines objects im dom baum?

Hallo Leute!

ich versuche seit einiger zeit ein javascript menüsystem zu schreiben. befindet sich der zeiger über dem gewünschten element
soll an einer anderen stelle weitere information eingeblendet werden (visbility,display). prinzipiell kein problem. vergibt man allen elementen eine eindeutige id und spricht diese darüber an gibt es  keine probleme.

aus irgendeinem fand ich diese bewährte idee nicht mehr elegant und versuchte diese funktion über den DOM baum abzubilden. dh. ich versuche über eine schleife herauszufinden wie der index des eben aktivierten childelements ist (this wird mitgegeben), um danach den i-ten child des nächsten siblings zu aktivieren. klingt sehr einfach
und effektiv, da man beliebig viele menüs hinzufügen könnte.

meine frage: gibt es eine andere "bessere" möglichkeit die position eines childs im parent baum herauszufinden?

vielen dank für die tipps im voraus
mfg
kris

konkret:

  1. html struktur
    <!-- hauptmenü -->
    <div class="hauptmenue">
      <span class="text" onmouseover="state(this);">text1</span>
      <br />
      <span class="text" onmouseover="state(this);">text2</span>
    </div>
    <!-- submenü -->
    <div class="submenues">
      <div>sub_menue1</div>
      <div>sub_menuw2</div>
    </div>

  2. javascript
    function state(object)
    {
      // hole elternelement
      var parent = object.parentNode;
      var pos = 0;
      var count = 0;
      for(i=0;i<parent.childNodes.length;i++)
      {
        // ist der aktuelle child knoten gleich dem übergebenen knoten
        // weiß ich welche position ich habe :)
        if(parent.childNodes[i] == object)
        {
          parent.nextSibling.childNodes[count].className='line1';
          pos = count;
          return;
        }
        // es werden nur die childs gleichen typs gezählt
        // um zb. br-tags auszuschließen
        if(parent.childNodes[i].tagName == object.tagName)
          count++;
      }
      var next = parent.nextSibling.nextSibling;
      next.childNodes[pos].style.visibility = 'visible';
      next.childNodes[pos].style.display = 'block';
    }

  1. oops.... hab mich bei meiner email vertan
    sollte kristian.m@gmx.net heißen

    sorry
    kris