Thoralf Knuth: Linkaufruf trotz onclick="...;return false;"

Hallo,

um folgenden Code-Ausschnitt geht's:

<a href="#JavaScript"
   onclick="js_fSH('123');return false;"
   onmouseover="/*alert('in');*/js_fIH('123',2);return true;"
   onmouseout="/*alert('out');*/js_fIH('123',1);return true;">
<small id="more123">mehr &#187;&#187;<!--»»--></small>
<small style="display:none;" id="less123"><!--««-->&#171;&#171; ausblenden</small>
</a>
<div id="div123"
     style="border:1px solid #444;display:none;margin:5px auto auto 25px;padding:2px;background-color:#222;color:#fff;">

...

</div>

Warum geht der Mozilla beim Klicken von mehr/ausblenden trotzdem auf #JavaScript? Bin ich blind?

Gruß, Thoralf

--
Sic Luceat Lux!
  1. Hi,

    <a href="#JavaScript"
       onclick="js_fSH('123');return false;"
    Warum geht der Mozilla beim Klicken von mehr/ausblenden trotzdem auf #JavaScript?

    vermutlich wird die Script-Ausführung wegen eines Fehlers abgebrochen.

    Bin ich blind?

    Das vermag ich nicht zu beurteilen.

    Cheatah

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hallo,

      vermutlich wird die Script-Ausführung wegen eines Fehlers abgebrochen.

      Nein, denn die JavaScript-Konsole schweigt sich aus. Wenn ich Fehler drin hab, mault mich selbige an.

      Bin ich blind?
      Das vermag ich nicht zu beurteilen.

      War durchaus rhetorisch gemeint. ;) Aber ich entnehme Deiner Antwort, dass zumindest im Code-Ausschnitt kein Grund für dieses Fehlverhalten zu sehen ist.

      Gruß, Thoralf

      --
      Sic Luceat Lux!
      1. Hi,

        War durchaus rhetorisch gemeint. ;) Aber ich entnehme Deiner Antwort, dass zumindest im Code-Ausschnitt kein Grund für dieses Fehlverhalten zu sehen ist.

        Aber der Code-Ausschnitt enthält auch nicht die aufgerufenen Funktionen...

        cu,
        Andreas

        --
        MudGuard? Siehe http://www.Mud-Guard.de/
        Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
        1. Hallo,

          Aber der Code-Ausschnitt enthält auch nicht die aufgerufenen Funktionen...

          function js_fSH( sUnId )
          {
           /* Schaltet die Anzeige des div's mit zusaetzlichen Infos an und aus und wechselt die Quelle der korrespondierenden Grafiken
              Aufgerufen wird diese Funktion im onClick-Handler.
              Uebergeben wird die UniqueID des div's, aktuell einfach ein Timestamp. Daraus werden dann die einzelnen IDs ermittelt.
              (js_fSH = JavaScript_FunktionShowHide) */
           var objImg;  objImg = document.getElementById( 'img' + sUnId ); /* Die Grafik mit [+] & [-] */
           var objMore; objMore = document.getElementById( 'more' + sUnId ); /* Text-Element "einblenden" */
           var objLess; objLess = document.getElementById( 'less' + sUnId ); /* Text-Element "ausblenden" */
           var objDiv;  objDiv = document.getElementById( 'div' + sUnId ); /* Der div mit dem verborgenen Text. */

          /* Ist der entscheidende div unsichtbar, schalten wir ihn ein, die Grafik auf minus und den Text auf "ausblenden".
              Sonst schalten wir ihn aus, die Grafik auf plus und den Text auf einblenden.
              Durch diese Reihenfolge ist es egal, ob der div-display-style auf 'block', 'inline' oder leer steht, 'none' ist einheitlich.
              Siehe http://www.w3.org/TR/REC-CSS2/visuren.html#display-prop */
           if( objDiv.style.display == 'none' )
           {
            with( objImg )
            {
             src = src.replace( '/plus', '/minus' ); /* Grafik von plus nach minus */
             title =' Zusätzliche Informationen wieder ausblenden...'; alt = '[-]';
            } /* with( objImg ) */
            objDiv.style.display = ''; /* div-style-display zurueck auf default */
            objMore.style.display = 'none'; /* 'mehr' ausblenden */
            objLess.style.display = ''; /* 'ausblenden' wieder auf Standard */
           } /* if( objDiv.style.display == 'none' ) */
           else
           {
            with( objImg )
            {
             src = src.replace( '/minus', '/plus' );  /* Grafik von minus nach plus */
             title = 'Zusätzliche Informationen anzeigen...'; alt = '[+]';
            } /* with( objImg ) */
            objDiv.style.display = 'none'; /* div-style-display auf none */
            objMore.style.display = ''; /* 'mehr' wieder auf Standard */
            objLess.style.display = 'none'; /* 'ausblenden' ausblenden */
           } /* if( objDiv.style.display == 'none' ) ... else */
          } /* function js_fSH( sImgId, sDivId ) */

          Ich hab den Code weitestgehend reduziert gehabt, der Fehler blieb.

          Gruß, Thoralf

          --
          Sic Luceat Lux!
          1. Nachtrag: http://utworld.de/ und dort gleich die erste Neuigkeit der Link zu 'mehr'.

            Gruß, Thoralf

            --
            Sic Luceat Lux!
            1. Hi,

              Nachtrag: http://utworld.de/ und dort gleich die erste Neuigkeit der Link zu 'mehr'.

              hat exakt das gewünschte Verhalten.

              Cheatah

              --
              X-Will-Answer-Email: No
              X-Please-Search-Archive-First: Absolutely Yes
            2. Hi,

              Nachtrag: http://utworld.de/ und dort gleich die erste Neuigkeit der Link zu 'mehr'.

              Da wird mehr Text eingeblendet, der Link selbst wird zu "ausblenden".

              Kann es sein, daß Dich irgendwie Dein Cache austrickst?

              cu,
              Andreas

              --
              MudGuard? Siehe http://www.Mud-Guard.de/
              Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
              1. Hallo,

                Da wird mehr Text eingeblendet, der Link selbst wird zu "ausblenden".

                Der Code funktioniert. Nur in meinem FF0.8 wird dann die Adresse zu ...#JavaScript, was ich nicht verstehe.

                Im Opera7 ist es so, wie es soll. Im FireFox funktioniert der Code zwar, aber selbst nach Leeren des Caches steht dann oben statt http://utworld.gamesweb.com/ dann plötzlich http://utworld.gamesweb.com/#JavaScript-Link, wenn ich dann testweise einen existierenden Anker/ID nehme, springt er an der Stelle sogar. JavaScript ist aber an und ich wüßte auch nicht, wo ich konkret dieses Verhalten abgeschaltet haben könnte.

                Gruß, Thoralf

                --
                Sic Luceat Lux!
  2. hi,

    <a href="#JavaScript"
       onclick="js_fSH('123');return false;"

    warum _benutzt_ du denn überhaupt einen link, wenn du lediglich onClick eine funktion ausführen willst?
    onClick ist doch durchaus auch für andere elemente definiert.

    gruss,
    wahsaga

    1. Hallo,

      warum _benutzt_ du denn überhaupt einen link, wenn du lediglich onClick eine funktion ausführen willst?

      Eigentlich wegen der Abwärtskompatibilität, aber das muss ich mal im Auge behalten und durchtesten, IE5 und Opera6 als kleinste Browser reichen eigentlich aus.

      Gruß, Thoralf

      --
      Sic Luceat Lux!
  3. hi,
    Ich hab das nicht wirklich nachvollzogen, geschweige denn verstanden.
    Kann jetzt blöd sein aber wie ist es mit:

    onclick="js_fSH('123');void(0);" ?

    mfg
    karl