Caro: Deklaration einer Variablen/Ansprechen eines html-Tags

Hallo Leute,

ich habe folgendes Problem:

Ich bastel im Moment eine Seite, bei der die Navigation oben horizontal angezeigt werden soll. Es handelt sich dabei um zwei ineinander verschachtelte Listen.

<ul>
    <li>1</li>
    <li>2
        <ul>
            <li>2.1</li>
            <li>2.2</li>
        </ul>
    </li>
</ul>

2.1 und 2.2 sollen erst erscheinen, wenn man mit der Maus über Punkt 2 fährt. Die einzelnen Punkte/Links sind aber kein Text, sondern Buttons.

Bis hierher kein Problem, denn das habe ich mit CSS gelöst. Im Mozilla Firefox wird die Navigation richtig angezeigt. Im IE7 funktioniert dies allerdings nicht.

Ich habe mich bereits durch die SELFHTML-Doku gewühlt und bin auf die Star-Plus-HTML-Hacks gestoßen, die ja eigentlich für den IE7 da sein sollen. Dies funktioniert leider nicht.

Also habe ich für den IE7 eine andere Lösung in JavaScript geschrieben bzw. zusammengesucht. Nun funktioniert die Navigation auch im IE7, nur habe ich jetzt Lücken zwischen den Listenpunkten 2.1 und 2.2.

Ich weiß auch, wie ich das Problem beheben kann. Ich muss nur für 2.1 und 2.2 margin und padding auf 0 setzen.

Jetzt das Problem: Ich weiß nicht, wie ich deklarieren muss, um genau die "li" von 2.1 und 2.2 ansprechen zu können.

Hier der entsprechende Quellcode:

<script type="text/javascript">
if(window.navigator.systemLanguage && !window.navigator.language)
{
    function hoverIE()
    {
        var LI = document.getElementById("Navigation").firstChild;
        do
        {
            if (sucheUL(LI.firstChild))
            {
                LI.onmouseover=einblenden;
                LI.onmouseout=ausblenden;
            }
        LI = LI.nextSibling;
        }
        while(LI);
    }

function sucheUL(UL)
    {
        do
        {
            if(UL) UL = UL.nextSibling;
            if(UL && UL.nodeName == "UL") return UL;
        }
        while(UL);
        return false;
    }

function einblenden()
    {
        var UL = sucheUL(this.firstChild);
        UL.style.display = "block"; UL.style.backgroundColor = "#f00";
 UL.style.left = "5";
    }

function ausblenden()
    {
        sucheUL(this.firstChild).style.display = "none";
    }

window.onload=hoverIE;
}
</script>

Liege ich mit meinen Behauptungen eigentlich richtig?

Für Eure Hilfe wäre ich euch sehr dankbar, denn so langsam aber sicher kann ich diesen Quellcode nicht mehr sehen ;-).

  1. Hallo Caro!

    Bis hierher kein Problem, denn das habe ich mit CSS gelöst. Im Mozilla Firefox wird die Navigation richtig angezeigt. Im IE7 funktioniert dies allerdings nicht.

    Sternchenhack ist für den IE 7 so viel ich weiß unwirksam.

    Nur für den IE 7 brauchst auch kein JavaScript, wenn, eher für den IE 6. IE 7 kann sehr wohl CSS-Hover, wenn auch mit Einschränkungen. Ich hatte vor kurzem erst das Problem mit Paul diskutiert:

    http://forum.de.selfhtml.org/archiv/2007/5/t151555/#m985737

    Viele Grüße aus Frankfurt/Main,
    Patrick

    --

    _ - jenseits vom delirium - _
    <hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash>
    Nichts ist unmöglich? Doch!
    1. Hallo Patrick!

      Danke erstmal für die schnelle Antwort.

      Sternchenhack ist für den IE 7 so viel ich weiß unwirksam.

      Du redest von Star-HTML-Hacks. Darunter befindet sich der Star-Plus-HTML-Hack. Hab ich heute erst nachgeguckt ;-)

      Nur für den IE 7 brauchst auch kein JavaScript, wenn, eher für den IE 6. IE 7 kann sehr wohl CSS-Hover, wenn auch mit Einschränkungen.

      Das ist sehr interessant, aber leider hilft es mir nicht viel weiter, wenn es mal klappt und mal nicht und ich alles erstmal ausprobieren muss. Der Kunde wartet auf seine Seite.

      Da ich ja weiß, dass es mit JavaScript klappt, würde ich es gern so machen. Daher meine Frage.

      Trotzdem danke.

      1. hi,

        Das ist sehr interessant, aber leider hilft es mir nicht viel weiter, wenn es mal klappt und mal nicht und ich alles erstmal ausprobieren muss. Der Kunde wartet auf seine Seite.

        Wenn es an Erfahrung mangelt, muss man halt mal ausprobieren.
        Und der Kunde im Zweifelsfalle auch mal warten, wenn er jemanden beauftragt hat, bei dem dies der Fall ist.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. Hallo wahsaga!

          Wenn es an Erfahrung mangelt, muss man halt mal ausprobieren.

          Leider stecken unsere lieben Browser, vor allem der eine, der uns schlaflos in der Nähe von Seattle lässt, voller Überraschungseier, so dass auch Erfahrung vor der Ausprobierei oft nicht schützt!

          ;)

          Viele Grüße aus Frankfurt/Main,
          Patrick

          --

          _ - jenseits vom delirium - _
          <hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash>
          Nichts ist unmöglich? Doch!