Samuel Vogel: Ganz einfaches Dropdown

Hallo,

Ich suche jetzt seit etwa 20 min. bei Google nach einem brauchbaren Dropdown Menu aber ich finde nur unbrauchbare *grrr*
Es sollte folgende Sachen können:
 - Aufklappen wenn man mit der masu drüber fährt (keine sonstigen effekte nur aufklappen)
 - die Menü einträge halt schön untereinander anzeigen ;)

samy,

  1. http://www.sothink-dhtmlmenu.net-software-download.com/

    wird dir helfen, ist ein gutes DHTML-Tool

    Mfg,
    shirinka

  2. hi,

    Ich suche jetzt seit etwa 20 min. bei Google nach einem brauchbaren Dropdown Menu

    Warum bei Google? Schau doch mal ins Forums-Archiv oder gleich in SELFHTML nach.

    Es sollte folgende Sachen können:
     - Aufklappen wenn man mit der masu drüber fährt (keine sonstigen effekte nur aufklappen)
     - die Menü einträge halt schön untereinander anzeigen ;)

    och ... das ist wirklich bescheiden. Klau dir einfach die "Quickbar" aus SELFHTML (was schon ein paar Tausend andere gemacht haben) und werde glücklich.

    Grüße aus Berlin

    Christoph S.

  3. hallo,
    bau dir doch einfach nen <div> und dann über den link ein mousover -> show layer ...
    das ist doch nu nicht das problem
    uwi

    1. hi,

      bau dir doch einfach nen <div> und dann über den link ein mousover -> show layer ...
      das ist doch nu nicht das problem

      Doch, das isses. Was du vorschlägst, ist viel zu kompliziert und unnötig. Es geht ganz einfach um ungefähr so etwas:

      <select size="1" name="Auswahl" onChange="Go(this.form.Auswahl.options[this.form.Auswahl.options.selectedIndex].value)">
      <option value="nothing">W&auml;hlen Sie bitte eine Kategorie:
      <option value="report.htm">report</option>
      <option value="tab.htm">tab.htm</option>
      ...
      </select>

      Das bißchen zugehörige Javascript sieht so aus:

      function Go(x) {
      ...
         [wird jetzt wegen fortgeschrittener Tageszeit nicht mehr dargestellt]
      ...
      }

      hihi ;-)

      Grüße aus Berlin

      Christoph S.

      1. Danke schon mal, aber es soll sich ja schon beim mouseover öffnen und man soll nicht klicken um es zu öffnen ;) Und der dumme Pfeil nach unten sollte auch ned da sein, deshalb kann es auch kein Formular werden ;/

        1. einfach nur ein ansatz:

          nimmst ein bild für menü, packst menü in ein <div> und machst das div-Objekt ganz klein, mit style="overlow hidden" versteckst du den Bereich, der aus den div-Grenzen rauskommt

          durch javascript + moseOver() kannst du eine Funktion schreiben, die overflow auf visible setzt

          ich gebe keine garantie, dass es in allen browsern mit <div> funktioniert, bei IE aber auf jeden fall

          Mfg
          shirinka

          1. Gude,

            Ich kanns ja auch einfach mit visibility machen, oder?
            Aber das Problem ist das visibility auf visible zu setzen!

            samy,

          2. hi,

            einfach nur ein ansatz:

            Nein, das ist keiner, jedenfalls nicht, wenn du das gewählte Topic "dropdown" als Ansatz nimmst.

            nimmst ein bild für menü

            Bilder sind in Dropdown-Konstruktionen wenig hilfreich

            mit style="overlow hidden"

            Diese Anweisung existiert nicht. Falls du "overflow" meinst, solltest du mal http://de.selfhtml.org/css/eigenschaften/positionierung.htm#overflow nachlesen.

            durch javascript + moseOver() kannst du eine Funktion schreiben, die overflow auf visible setzt

            Falsch. Was du machen kannst, funktioniert nicht "durch" Javascript, aber es funktioniert natürlich _mit_ Javascript.

            ich gebe keine garantie, dass es in allen browsern mit <div> funktioniert

            Mußt du auch nicht. Bis auf Textbrowser wie Lynx funktioniert es trotzdem so ziemlich überall. Allerdings hat "overflow" nun nix mehr mit Javascript zu tun. Das ist CSS  -  und falls du damit zur Verwendung von CSS raten wolltest, hättest du _prinzipiell_ recht, es nutzt nur bei der vorgestellten Frage nix.

            Grüße aus Berlin

            Christoph S.

            1. Sorry Christoph, ich will zwar hier keinen Krieg anfangen, aber du labberst schwachsinn!

              1.
              »»»» nimmst ein bild für menü

              Bilder sind in Dropdown-Konstruktionen wenig hilfreich

              bist du dir da 100 pro sicher? komisch, ich hab aber schon oft brauchbare ergebnisse erziehlt, hmm ...

              »»»» mit style="overlow hidden"

              Diese Anweisung existiert nicht. Falls du "overflow" meinst, solltest du mal bla bla bla nachlesen

              ich muss gar nix lesen, 1. ja es enthält einen tipfehler, 2. wenn ich sage: ansatz, dann bin ich wohl nicht gezwungen, die syntax zu übernehmen, oder? ich sage mit style="over(F)low hidden" das aus, was der entwickler als "setze das verdammte ding auf invisible auffassen soll", wie er dann das ganze durchführt und ob er syntaxgerecht schreibt, ist seine sache, ich liefere sozusagen nur eine idee

              »»»» durch javascript + moseOver() kannst du eine Funktion schreiben, die overflow auf visible setzt

              Falsch. Was du machen kannst, funktioniert nicht "durch" Javascript, aber es funktioniert natürlich _mit_ Javascript.

              wird hier die JavaScript-Semantik,-Lekalik,-Grammatik besprochen oder bin ich wieder in der Shule in Deutsch-Unterricht oder im falschen Film?

              »»»» ich gebe keine garantie, dass es in allen browsern mit <div> funktioniert

              Mußt du auch nicht. Bis auf Textbrowser wie Lynx funktioniert es trotzdem so ziemlich überall. Allerdings hat "overflow" nun nix mehr mit Javascript zu tun. Das ist CSS  -  und falls du damit zur Verwendung von CSS raten wolltest, hättest du _prinzipiell_ recht, es nutzt nur bei der vorgestellten Frage nix.

              falsch und richtig!
              1. von meinem arbeitgeber wird win2k+ie vorgeschrieben, deswegen hab ich keine ahnung von anderen browsern, wie sie auf manipulationen mit divs reagieren, kann mir aber schon vorstellen, dass es dann nicht überall das gleiche aussehen haben kann,

              will auch nix darüber wissen, allein schon fehler von ie ausmerzen reicht mir, deswegen auch keine garantie

              2. overflow hat schon was mit javascript zu tun, und zwar:
              man kann auf das style-Objekt mit (durch??? --- naja, wie es dir beliebt, bin in deutsch ned mächtig, im vergleich zu manch anderen unmenschlichen sprachen) JavaScript zugreifen und den Attributen von diesem Objekt andere werte zuweisen, sozusagen das Objektaussehen verändern,

              so das nach dem mouseOver eine bestimmte funktion aufruft, diese bestimmte funktion das div-Objekt entwerder auf overflow = visible setzt, so, daß menü sichtbar wird oder die dimensionen, sprich höhe,breite des div-Objektes vergrössert

              durch einen Timer oder einen Microsoft-Filter (oder selber nachbauen) kann man noch ein fading-effekt einfügen, so, daß das menu aufgerollt wird

              hoffe, habe alle misverständnisse geklärt

              Mfg,
              shirinka

              P.S.: lieber Christoph, für die Zukunft: sag lieber gar nix, wenn du nix produnktives beizutragen hast, außer auf die gramatischen und sprachlichen fehler von leuten einzugehen, aber gehört das nicht in einen "Ich lerne deutsch"-Forum?

    2. Gude,

      Doch genau das ist das Problem ;)
      Aber ich werds mal mit Selfhtml versuchen!

      samy,

  4. Hallo,

    Ich habs jetzt so gemacht:
    <style type="text/css">
    .menu1 {
       visibility: hidden;
    }
    </style>
    <script type="text/javascript">
    function openmenu() {
      document.getElementById('menu1').visibility = 'hidden';
    }
    </script>

    </head>
    <body>

    <img src="#" onClick="openmenu()" alt="lala">

    <div id="menu1">
    <h2>hallo!!!</h2>
    </div>

    Aber es geht nicht! Könnt ihr mir weiterhelfen ?

    samy,

    1. hi,

      <style type="text/css">
      .menu1 {
         visibility: hidden;
      }
      </style>

      Damit wird eine ganze neue Klasse als "hidden" definiert. Nur setzt du diese Klasse später nicht ein, es ist also völlig wirkungslos. Ohne den Punkt würde diese Definition auf dein DIV zutreffen können.

      <script type="text/javascript">
      function openmenu() {
        document.getElementById('menu1').visibility = 'hidden';
      }
      </script>

      Das ist schlicht und einfach falsch. Wenn überhaupt, müßtest du schreiben:
        document.getElementById(menu1).style.visibility="hidden";

      <img src="#" onClick="openmenu()" alt="lala">

      Ist unverständlich. Du sagst, daß du ein anklickbares Bild haben möchtest. Aber als Bild gibst du # an. Das ist Unsinn. Und der EventHandler soll dein DIV auf "unsichtbar" setzen, was er gar nicht zu tun braucht, da dein CSS ihn schon als unsichtbar definieren sollte (was bloß nicht geklappt hat). Können kann "onclick()" das sowieso nicht, weil die Javascript-Funktion falsch ist.

      <div id="menu1">
      <h2>hallo!!!</h2>
      </div>

      Aha, jetzt gibts die ID, die von deiner Javascript-Funktion oben angesprochen werden soll. Aber wo ist ein EventHandler, um den Javascript-Krempel auch aufzurufen? Und warum versuchst du, mit (falschem) Javascript und mit (falschem) CSS exakt denselben Effekt zu erreichen, nämlich den, daß dein DIV unsichtbar wird? Du kannst es dir leichter machen: Da sowieso nichts angezeigt werden soll, kannst du den CSS-Versuch weglassen, das fehlerhafze Javascript weglassen und schließlich auch dein DIV weglassen. Dann siehst du das, was du bisher tatsächlich darstellen wolltest: nichts. Es ist ja dein Wunsch, nichts anzuzeigen ...

      Aber es geht nicht!

      Was geht nicht? Welche Fehlermeldung bekommst du, und was an der Fehlermeldung verstehst du nicht? Wenn du jetzt auf deiner Seite noch irgendetwas angezeigt bekommen möchtest, mußt du das natürlich noch hinschreiben. Bisher hast du dich nur fleißig darum bemüht, daß deine Seite auf gar keinen Fall Inhalt anzeigen soll, und das tut sie auch, sie zeigt wunschgemäß nichts an.

      Und was an dem Ganzen soll nun irgendwie mit "Dropdown" zu tun haben?

      Grüße aus Berlin

      Christoph S.

      1. Hi,

        Das ist schlicht und einfach falsch. Wenn überhaupt, müßtest du schreiben:
          document.getElementById(menu1).style.visibility="hidden";

        womit dann ein Fehler durch einen anderen ausgetauscht wäre ;-)

        freundliche Grüße
        Ingo