href="#" onClick(...) wird nicht ausgeführt

xthetronx

Erfahrenes Mitglied
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
 
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 javascript:void direkt als Referenz anzugeben, welches etwa so aussähe:
Code:
<a href="javascript:void funktion()">&hellip;</a>
 
man kann auch folgendes machen

PHP:
<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()"
 
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
 
Original geschrieben von Lapsus
Code:
<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...
 
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. ;)
 
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.
 
Zurück