Tobias Otto: href # problem

Hallo,

ich habe ein menu mit eine onClick javascript funktion

<a href="##" onClick="function">

problem ist der IE. Wenn ich draufdrück springt die seite ganz nach oben. Im ff bleibt die seite stehen. so soll es auch sein. habe dann mal probiert <a href="#site" onClick="function">

jetzt springt er immer zu sitecontainer. Wenn ich href weglasse funktioniert es zwar auch aber es kommt nicht das handsymbol.

  1. hi,

    ich habe ein menu mit eine onClick javascript funktion

    <a href="##" onClick="function">

    problem ist der IE. Wenn ich draufdrück springt die seite ganz nach oben. Im ff bleibt die seite stehen. so soll es auch sein. habe dann mal probiert <a href="#site" onClick="function">

    jetzt springt er immer zu sitecontainer. Wenn ich href weglasse funktioniert es zwar auch aber es kommt nicht das handsymbol.

    Unterbinde die Ausführung des Links durch ein return false; am Ende des Eventhandlers.

    <a href="#" onclick="function(); return false;">

    gruß,
    wahsaga

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

      ich habe das script jetzt so geändert, aber im ie springt er dennoch

      <script type="text/javascript">

      function einblenden(id, show) {
       if(!document.getElementById) return;
       var obj = document.getElementById(id);
       if(!obj || !obj.style) return;
       if (show == 1) {
        obj.style.display = 'block';
       }
       if (show == 0) {
        obj.style.display = 'none';
       }
      return false;
      }

      </script>

      1. hi,

        ich habe das script jetzt so geändert, aber im ie springt er dennoch

        Dann probiere es so, wie ich es dir gezeigt habe.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
      2. Hallo Tobias,

        if(!document.getElementById) return;
        if(!obj || !obj.style) return;

        Ich vermute mal, dass eine dieser beiden Bedingungen zutrifft. Dadurch wird statt der Anweisung

        return false;

        eine der beiden return-Anweisungen ohne Wert aufgerufen. Wird eine return-Anweisung ohne explizite Angabe des Rückgabewertes notiert, wird automatisch null als Rückgabewert verwendet.

        Ich würde deshalb tatsächlich die von wahsaga vorgeschlagene Form verwenden:

        <a href="wasauchimmer" onclick="einblenden(foo, bar); return false;">

        Dadurch ist nämlich gesichert, dass der Link in keinem Fall aufgerufen wird, egal was die Funktion einblenden() zurück gibt.

        Schöne Grüße,

        Johannes

        1. Hello out there!

          <a href="wasauchimmer" onclick="einblenden(foo, bar); return false;">

          Dadurch ist nämlich gesichert, dass der Link in keinem Fall aufgerufen wird, egal was die Funktion einblenden() zurück gibt.

          In keinem Fall? Der Link wird in _jedem_ Fall aufgerufen, wenn kein JavaScript ausgeführt wird.

          Deshalb gehört in den Wert des 'href'-Attributs der URI der Ressource, die für Nutzer (u.a. Clients) ohne JavaScript alternative Inhalte zur Verfügung stellt. Das dürfte in den wenigsten Fällen der Anfang der aktuellen  Seite sein, folglich ist 'href="#"' Unsinn.

          Gibst es keine solche Ressource, dann gibt es keinen Link, dann ist die Verwendung des 'a'-Elements zweifelhaft, zumindest die des 'href'-Attributs. Der 'onclick'-Eventhandler kann bei so ziemlich jedem beliebigen Element Verwendung finden.

          See ya up the road,
          Gunnar

          --
          „Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)
  2. Hallo Tobias!

    jetzt springt er immer zu sitecontainer. Wenn ich href weglasse funktioniert es zwar auch aber es kommt nicht das handsymbol.

    Setze mit CSS einen Cursor.
    Lass Deine Funktion einen Returnwert haben der false ist.
    Gib direkt im onclick nach dem Funktionsaufruf das return false an.

    Schönen Gruß

    Afra