• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Zweimal onclick

Status
Für weitere Antworten geschlossen.
E

Efchen

Guest
Stellt Euch folgenden Code vor:
HTML:
...
<td onclick='machWas();'>
  <a href='' onclick='machWasAnderes(); return false;'>Text</a>
</td>
...
Damit hat man ja quasi zwei onclick in einer Zelle. Klicke ich auf den Text, wird zuerst das Event im Link ausgeführt, klicke ich nicht auf den Text, wird das Event in der Zelle ausgeführt.

Würde ich das "return false" weglassen, sollte zuerst "machWasAnderes()", dann "machWas()" aufgerufen werden.
Eigentlich war mein Verständnis aber so, dass das "return false" die weitere Abarbeitung stoppt. Tut es aber nicht, beide Funktionen werden aufgerufen.

Ich vermute, dass das "return false" nur die weitere Abarbeitung in diesem Element stoppt, also nicht mehr den Link verfolgt und eine neue Seite aufruft, alle Events aber dennoch abgearbeitet werden.

Kann man erreichen, dass in diesem Fall beim Klicken auf den Text im Link nur das eine Event ausgelöst wird, das andere aber nicht? Funktioniert es vielleicht, indem man in der einen Funktion eine Variable setzt und diese in der anderen Funktion überprüft?

Oder gibts eine elegantere Lösung?

Danke,
-Efchen
 
Wie komme ich an das Event-Objekt, wenn mein Event über den Event-Handler onclick definiert ist?
window.event ist undefined.

Funktioniert stopPrpagation nur im W3C Model, also nur wenn ich das Event über addEventListener definiere?
Das würde mich nerven, denn dann müsste ich erst wieder eine Funktion schreiben, die hunderten von Elementen den Listener hinzufügt...
 
Zuletzt bearbeitet von einem Moderator:
Du musst dann das Event objekt explizit der Funktion übergeben onclick="tu_was(event)"
 
Funktioniert stopPrpagation nur im W3C Model, also nur wenn ich das Event über addEventListener definiere?
Das würde mich nerven, denn dann müsste ich erst wieder eine Funktion schreiben, die hunderten von Elementen den Listener hinzufügt...
Eine Schleife über 100. Elemente dauert wenige Millisekunden.

EDIT: ist aber nicht nötig. stopPropagation funktioniert, wenn das Eventobjekt diese Funktion kennt.
 
Ja, sauber!
Das funktioniert mit der Übergabe.

Vielen Dank Euch beiden!

Eine Schleife über 100. Elemente dauert wenige Millisekunden.
Wenn das Script zu erstellen nur auch so schnell ginge :-)

So wars jetzt einfacher, so hab ich nur eine Stelle innerhalb einer Schleife, wo ich onclick="..." stehen habe, und übergeben als erstes zusätzlich "event". Das reicht mir so. Das ist gut.

Danke!
-Efchen

P.S.: Gute Antworten, bewerten darf ich Euch leider (noch) nicht. Dummes Bewertungssystem.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben