<a href="#" onClick="tu_dies()"> springt an Seitenanfang
Ingo D. Ongemuth
- javascript
0 dolflyer0 Helmut Weber0 Christoph Schnauß0 Struppi
Hallo Forum,
eine hoffentlich nicht allzu schwierige Frage: <a href="#" onClick="tu_dies()">tu_dies</a> soll ein Link sein, der onClick eine Funktion ausführt. Allerdings möchte ich verhindern, dass die Seite bei Klick auf den Link nach ganz oben springt. Gibt es eine elegante Lösung für das Problem?
Danke vielmals!
Ingo
hallo aus dem forum!
wenn du das href einfach weglässt, dann passiert nur das onclick... ;)
lg,
dolflyer
moin,
hallo aus dem forum!
wenn du das href einfach weglässt, dann passiert nur das onclick... ;)lg,
dolflyer
Was allerdings auch kein valides HTML mehr ist, da entweder "name" für einen Anker oder "href" für einen link angegeben werden soll. wie soll dann ein Browser damit umgehen? Ist es ein Anker, der nicht speziell dargestellt wird, oder ein link, der hervorgehoben wird?
Mein Opera 7 zumindest zeigt mir ein solches Konstrukt /zu recht) nicht als link an.
so long
Vimes.
Hi,
wenn du das href einfach weglässt, dann passiert nur das onclick... ;)
Was allerdings auch kein valides HTML mehr ist, da entweder "name" für einen Anker oder "href" für einen link angegeben werden soll.
Soll != Muß.
Keines der beiden Attribute ist required. Und es steht sogar explizit im Standard, daß es erlaubt ist, keines der Attribute name, id und href zu benutzen:
Authors may also create an A element that specifies no anchors, i.e., that doesn't specify href, name, or id.
(http://localhost/Doku/HTML401/struct/links.html#idx-anchor-2)
wie soll dann ein Browser damit umgehen? Ist es ein Anker, der nicht speziell dargestellt wird, oder ein link, der hervorgehoben wird?
Jedes a-Element ist ein Anker (Each A element defines an anchor - 4 Zeilen über obigem Zitat).
Ein Link ist es dann, wenn es ein href-Attribut hat, sonst nicht.
cu,
Andreas
Hallo Ingo,
<a href="#" onClick="tu_dies()">tu_dies</a>
Dies führt deine JavaScript-Funktion tu_dies() aus, und springt auf den Anker #. Wenn Du nicht möchtest, dass auf den Anker gesprungen wird, musst Du dafür sorgen das deine Javascript ein return false zurück gibt.
z.B.:
<a href="#" onClick="tu_dies(); return false; ">tu_dies</a>
Manchmal sieht man aber auch folgendes:
<a href="javascript:void()" onClick="tu_dies(); return false; ">tu_dies</a>
Ich würde aber den ersten Vorschlag bevorzugen.
Gruß
Helmut Weber
Hallo Helmut,
das war es! Vielen herzlichen Dank für die prompte Hilfe!
Und auch allen anderen hier im Forum meinen Dank,
mit Grüssen,
Ingo
Hallo Ingo,
<a href="#" onClick="tu_dies()">tu_dies</a>
Dies führt deine JavaScript-Funktion tu_dies() aus, und springt auf den Anker #. Wenn Du nicht möchtest, dass auf den Anker gesprungen wird, musst Du dafür sorgen das deine Javascript ein return false zurück gibt.
z.B.:
<a href="#" onClick="tu_dies(); return false; ">tu_dies</a>Manchmal sieht man aber auch folgendes:
<a href="javascript:void()" onClick="tu_dies(); return false; ">tu_dies</a>
Hallo, Helmut !!
Was ist mit Pseudolinks :
<a href="javascript:tu_dies()">. . .
Gut oder schlecht ?
Übrigens :
<a href="javascript:" onClick="tu_dies()>. . .
funktioniert irgendwie auch .
!!??
Hallo 08/15
Was ist mit Pseudolinks :
<a href="javascript:tu_dies()">. . .
Gut oder schlecht ?
Übrigens :
<a href="javascript:" onClick="tu_dies()>. . .
funktioniert irgendwie auch .
Gehen wir das Problem mal von Vorne an:
HTML versteht erstmal kein JavaScript! wenn ich also href="javascript:[...]" schreibe, ist dies erstmal ein Fehler. Erst dadurch, das ein Browser JavaScript kann und auch so versteht wie Du es möchtest wird es trotzdem so funktionieren wie Du es möchtest.
Schreibe ich aber in das href-Attribut einen gültigen Link, ist mein HTML erstmal gültig und fehlerfrei. Jetzt kann ich mit JavaScript dafür sorgen, das meine Funktion so ausgeführt wird, wie ich möchte.
Das ist auf jeden Fall der bessere Weg. Denn so baut JavaScript auf HTML auf, und die Links funktionieren auch ohne JavaScript. Im anderen Fall wir innerhalb deines HTML-Codes JavaScript vorausgesetzt.
Gruß
Helmut Weber
hallo,
Gibt es eine elegante Lösung für das Problem?
Aber sicher doch. Setze an die Stelle, an der du ihn haben möchtest, einen Anker in deine Seite und laß das "href" darauf verweisen. "href" ganz wegzulassen ist nicht richtig.
Grüße aus Berlin
Christoph S.
Hi,
Aber sicher doch. Setze an die Stelle, an der du ihn haben möchtest, einen Anker in deine Seite und laß das "href" darauf verweisen. "href" ganz wegzulassen ist nicht richtig.
Es ist richtig. Details siehe [pref:t=61281&m=345389]
cu,
Andreas
hallo Andreas,
Aber sicher doch. Setze an die Stelle, an der du ihn haben möchtest, einen Anker in deine Seite und laß das "href" darauf verweisen. "href" ganz wegzulassen ist nicht richtig.
Es ist richtig. Details siehe [pref:t=61281&m=345389]
Du übersiehst wieder einmal den Internet Explorer. Der kann mit <a onclick="function()">klick</a> nichts anfangen, der EventHandler wird nur angesprochen, wenn "href" dabei ist. Insofern gilt meine Aussage für den IE - mozilla kann korrekterweise auf das Attribut verzichten.
Grüße aus Berlin
Christoph S.
Hallo,
Du übersiehst wieder einmal den Internet Explorer. Der kann mit <a onclick="function()">klick</a> nichts anfangen, der EventHandler wird nur angesprochen, wenn "href" dabei ist.
Kann ich nicht bestaetigen, zumindest IE 5.5 und 6.0 machen das durchaus mit.
MfG, Thomas
hallo Thomas,
Du übersiehst wieder einmal den Internet Explorer. Der kann mit <a onclick="function()">klick</a> nichts anfangen, der EventHandler wird nur angesprochen, wenn "href" dabei ist.
Kann ich nicht bestaetigen, zumindest IE 5.5 und 6.0 machen das durchaus mit.
5.5 habe ich nicht hier, aber 6.0 mit SP1 (WindowsXP mit SP1). Und der kanns nicht. Daß der IE nicht unbedingt der "Referenzbrowser" für die Umsetzung der W3C-Empfehlungen ist, brauchen wir ja nicht zu diskutieren.
Übrigens kanns auch mein Opera 7.11 nicht.
Grüße aus Berlin
Christoph S.
Hallo,
5.5 habe ich nicht hier, aber 6.0 mit SP1 (WindowsXP mit SP1). Und der kanns nicht.
Klappt bei mir auch unter diesen Bedingungen:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>onclick-Test ohne href</title>
<script language="JavaScript" type="text/javascript">
<!--
function Test()
{
alert("Hallo");
}
//-->
</script>
</head>
<body>
<a onclick="Test()">klick</a>
</body>
</html>
Daß der IE nicht unbedingt der "Referenzbrowser" für die Umsetzung der W3C-Empfehlungen ist, brauchen wir ja nicht zu diskutieren.
Ist ja auch hier auch nicht noetig.
Übrigens kanns auch mein Opera 7.11 nicht.
Mit Opera 7.21 funktioniert das obige Beispiel, ebenso unter Mozilla 1.4 und Mozilla Firebird 0.7.
MfG, Thomas
hi,
Klappt bei mir auch unter diesen Bedingungen:
Ich mags dir gerne glauben. Habe dein kleines Beispiel rauskopiert und ausprobiert. Der IE reagiert bei mir nicht auf den EventHandler. Also habe ich alle Browsereinstellungen, die ich mal vorgenommen habe, auf "Standard" zurückgesetzt, Cache gründlich ausgekehrt - er mag immer noch nicht. Setze ich probehalber ein "href" hinein, tut er es.
Mit Opera 7.21 funktioniert das obige Beispiel
Opera 7.21 habe ich mir grade geholt, muß ich noch installieren. 7.11 macht es auch nicht (bei mir).
ebenso unter Mozilla 1.4 und Mozilla Firebird 0.7.
Ja, mozilla hat keine Probleme damit, der kanns.
Alle drei befolgen zusätzlich CSS-Formatierungen (für a:link, a:visited usw.) nicht mehr, wenn kein Attribut dabei ist.
Grüße aus Berlin
Christoph S.
Hi,
Alle drei befolgen zusätzlich CSS-Formatierungen (für a:link, a:visited usw.) nicht mehr, wenn kein Attribut dabei ist.
:link und :visited treffen nur auf Links zu. Links sind als a-Elemente mit href-Attribut definiert.
:focus trifft auch nicht mehr zu, da die Browser auf ein a-Element, das kein Link ist, auch nicht den Fokus legen.
IE kann auch :hover nur für Links.
Mozilla und Opera zeigen bei mir (M 1.5, O 7.21) sowohl den hover- als auch den active-Effekt bei einem a-Element, das kein href-Attribut hat.
cu,
Andreas
Hi,
Aber sicher doch. Setze an die Stelle, an der du ihn haben möchtest, einen Anker in deine Seite und laß das "href" darauf verweisen. "href" ganz wegzulassen ist nicht richtig.
Es ist richtig. Details siehe [pref:t=61281&m=345389]Du übersiehst wieder einmal den Internet Explorer.
Nach Deiner Argumentationsmethode wäre auch
td:hover { background-color:red; }
nicht richtig - denn es funktioniert im Internet-Explorer nicht.
Ich unterscheide zwischen "richtig" und "in allen Browsern funktionierend".
Abgesehen davon: IE 6.0.2800.1106 SP 1 schmeißt mir bei
<p><a onclick="alert('test');">Test</a></p>
(in einer validen Seite eingebunden) beim Anklicken des Wortes Test eine Alert-Box mit Inhalt test.
Das Nicht-Funktionieren kann ich also nicht bestätigen.
cu,
Andreas
Hallo Forum,
eine hoffentlich nicht allzu schwierige Frage: <a href="#" onClick="tu_dies()">tu_dies</a> soll ein Link sein, der onClick eine Funktion ausführt. Allerdings möchte ich verhindern, dass die Seite bei Klick auf den Link nach ganz oben springt. Gibt es eine elegante Lösung für das Problem?
Mal abgesehen davon, dass '#' kein tolles link ziel ist, einfach ein return false hinter die Funktion und deine Problem ist gelöst.
Struppi.