wie ist die position meines objects im dom baum?
kris
- javascript
0 kris
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:
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>
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';
}
oops.... hab mich bei meiner email vertan
sollte kristian.m@gmx.net heißen
sorry
kris