Aus welchem Grund wird die Standardaktion bei diesem Beispiel nicht unterdrückt?
p-Elemente haben beim draufklicken keine Default-Aktion
<p id="absatz" style="padding:50px; background:yellow;">
<a class="link" href="http://www.spiegel.de">Spiegel.de</a>
</p>
> ~~~javascript
> document.getElementById("absatz").onclick = function() {
hier packst du ein click-Event auf das Element mit der ID "absatz" (also dein p-Element)
> var ziel = this.target || this.srcElement;
> if(ziel.className == "link") {
if ermittelt du, ob das Ziel (das p-Element) die Klasse "link" hat, hat es aber nicht
> alert("onclick");
> return false;
wird nicht ausgeführt.
> }
> }
>
Ohne if-Abfrage (die allerdings unerlässlich ist) funktioniert das Unterdrücken der Standardaktion problemlos.
Ohne der Verzweigung (die niemals zutrifft) wird das "return false" auch bei einem klick auf das a-Element ausgeführt (weil du ja beim Klick auf den Link immer "alle" klicks und es durch das DOM durchbubbelt).
Lösung: bring deine Logik in Ordnung, die für das Auffinden der Elemente zuständig ist und unterscheide klar _was_ eine Aktion liefern soll.
dein p-Element ist jedenfalls nicht dasselbe wie dessen Kind-Element (das a-Element).