tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
6
ZUGRIFFE
1081
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von xthetronx
    xthetronx xthetronx ist offline Mitglied Gold
    Registriert seit
    Jan 2002
    Beiträge
    243
    Hallo zusammen,

    versuche mal mein Problem zu beschreiben, obwohl ich keine Ahnung habe, was da schief läuft.

    Ich habe eine .php Seite.
    Dort werden Links in einer Variablen zusammengebaut, welche dann per

    echo "<a href=\"".$link."\">";

    eingetragen werden.
    Soweit so gut.
    Auf der Folgeseite steht dann:

    <a href="#" onClick='javascript:Weiter(...)';></a>

    Jetzt wird aber nicht das Javascript ausgeführt, sondern es steht auf einmal im href, beim MouseOver, wo ich dachte es steht dort nur ein Platzhalter, der ganze String aus der Variablen $link drin mit der # am Ende.
    Im Quellcode wird mir nur die # angezeigt.

    Ich dachte die # wäre einfach nur ein Platzhalter!

    Weglassen kann ich die # aber nicht, da ja ansonsten der Link nicht funktioniert.

    Kennt das vielleicht einer von euch? Ich bin da mit meinem Latein echt am Ende.

    Danke und Gruß

    Torsten
     
    http://www.fallen-harlekin.de

  2. #2
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Das Rautenzeichen (#) ist keinesfalls ein Platzhalter, sondern ein Indikator für eine Sprungmarke oder auch Anker, mit dem man sich innerhalb einer Seite bewegen kann.
    Viel zu häufig wird dieses Zeichen jedoch für JavaScript Ereignisaktionen (meist onclick) missbraucht. Das Ergebnis ist, dass der Browser bei fehlendem Ankername zum Anfang der Seite springt.

    Besser wäre hier die ‚Nuztlast‘ selbst mit dem Präfix &#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;:void direkt als Referenz anzugeben, welches etwa so aussähe:
    Code :
    1
    
    <a href="javascript:void [i]funktion()[/i]">&hellip;</a>
     
    Markus Wulftange

  3. #3
    Lapsus Lapsus ist offline Mitglied Silber
    Registriert seit
    Sep 2004
    Beiträge
    72
    man kann auch folgendes machen

    PHP-Code:
    <script type="text/javascript">
    function 
    myfunction(){
         {
    INSERT JS CODE HERE}
        return 
    false;
    }
    </script>
    <a href="" onClick="return myfunction()"> 
    Solange die Funktion nicht "true" zurückgibt, wird nach dem onClick Event "das Anklicken" nicht ausgeführt.

    fehlerhaft ist auf jedenfall onClick="javascript:myfunction()"
     

  4. #4
    Avatar von xthetronx
    xthetronx xthetronx ist offline Mitglied Gold
    Registriert seit
    Jan 2002
    Beiträge
    243
    Danke an euch beide.
    Da würde ich mal wieder ganz klar sagen, dass ich wieder was gelernt habe.

    Ich habe mir echt schon die Haare gerauft, wegen der Sache.

    Gruß

    Torsten
     
    http://www.fallen-harlekin.de

  5. #5
    Registriert seit
    Nov 2002
    Beiträge
    2.709
    Original geschrieben von Lapsus
    Code :
    1
    
    <a href="" onClick="return myfunction()">
    Kann man, sollte man aber nicht. Wenn man das so macht wird die Seite bei jedem anklicken neu aufgerufen. Sehr ungut. Egal, das Problem ist ja geloest, auch wenn es nichts mit PHP zu tun hatte...
     
    Im Ruhestand.

  6. #6
    Lapsus Lapsus ist offline Mitglied Silber
    Registriert seit
    Sep 2004
    Beiträge
    72
    wat wo wie?

    Wenn die JavaScript Funktion false zurückgibt wird gar nichts aufgerufen.
    Anderes Beispiel, aber ähnlich.

    <form onSubmit = "return myfunction()">

    </form>

    Wenn myfunction() false zurück gibt wird das Formular nicht abgeschickt. Egal ob du nun den Submit Button gedrückt hast oder nicht. Egal ob du document.formular.submit(); machst. Es passiert einfach nix.

    Also wenn du schon meinen Vorschlag kritisierst, dann berechtigt und nicht so.
     

  7. #7
    Registriert seit
    Nov 2002
    Beiträge
    2.709
    Natuerlich geht es, WENN die Funktion irgendwas sinnvolles macht (location=...) oder false zurueckliefert. Wenn dem aber nicht so ist? Was, wenn die Funktion lediglich ein alert() ausfuehrt? Von daher sollte man defaultmaessig, in so gut wie jedem Fall, das Shebang in die URL setzen.
     
    Im Ruhestand.

Ähnliche Themen

  1. Problem mit "top.location.href" funktioniert nicht
    Von finnex im Forum Javascript & Ajax
    Antworten: 4
    Letzter Beitrag: 17.06.09, 14:57
  2. "select" und "button" per "a href" ansprechen
    Von dennisnowack im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 30.01.08, 19:39
  3. "window.location.href" funktioniert im IE nicht!?
    Von Suchfunktion im Forum Javascript & Ajax
    Antworten: 5
    Letzter Beitrag: 12.06.07, 13:08
  4. location.href wird nicht ausgeführt
    Von pride im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 04.09.05, 18:43
  5. Antworten: 3
    Letzter Beitrag: 16.06.05, 03:10