Liebes Event-Objekt: welcher Link wurde geklickt?
Eddie
- javascript
Hallo allerseits,
ich möchte eine Reihe von Links für die Eventverarbeitung mittels JavaScript registrieren. Und zwar so, dass im HTML-Code keine Ereignisbehandlung (z.B. "onClick") mehr stattfinden muss.
Also notiere ich folgendes im JS-Code:
document.{DOM-Pfad}.meinLink1 = start;
document.{DOM-Pfad}.meinLink2 = start;
document.{DOM-Pfad}.meinLink3 = start;
...
Es wird also immer dieselbe Funktion aufgerufen:
function start(event) {...}
Nur wie kann ich jetzt innerhalb dieser Funktion rausfinden, welcher Link tatsaechlich geklickt wurde?
Danke für eure Hilfe,
Eddie
Nachtrag:
Ich brauche also im Prinzip einen Ersatz für
HTML: <a onclick="start(3);">mein dritter Link</a>
JS: start(nummer_des_Links){...}
Hallo Eddie.
function start(event) {...}
Nur wie kann ich jetzt innerhalb dieser Funktion rausfinden, welcher Link tatsaechlich geklickt wurde?
Mittels „this“, welches im Kontext des Linkes auf ebenselbigen verweist.
Ich brauche also im Prinzip einen Ersatz für
HTML: <a onclick="start(3);">mein dritter Link</a>
JS: start(nummer_des_Links){...}
Und wie genau sieht der Inhalt der Funktion „start“ aus? Unter Umständen genügt es schon, darin sämtliche „nummer_des_Links“ durch „this“ zu ersetzen.
Einen schönen Mittwoch noch.
Gruß, Mathias
Hallo Mathias,
ich bin mir nicht sicher, ob du mich richtig verstanden hast:
function start(event) {...}
Mittels „this“, welches im Kontext des Linkes auf ebenselbigen verweist.
Das wäre der Fall, wenn ich mit onclick arbeiten würde - was ich ja aber nicht tue! Im HTML-Link steht überhaupt kein JavaScript.
Und wie genau sieht der Inhalt der Funktion „start“ aus?
Ich kann dir sagen, wie ihre Signatur aussieht:
function start(event)
Wenn ein Link geklickt wird, erhält sie nur das Event, nicht den Auslöser (sprich den Link). Die Frage ist, wie ich aus dem Event den Auslöser (also den tatsächlich geklickten Link) schlussfolgern kann.
Eddie
Hallo Eddie.
function start(event) {...}
Mittels „this“, welches im Kontext des Linkes auf ebenselbigen verweist.
Das wäre der Fall, wenn ich mit onclick arbeiten würde - was ich ja aber nicht tue! Im HTML-Link steht überhaupt kein JavaScript.
Das sieht in deinem Eröffnungungsposting aber anders aus:
Ich brauche also im Prinzip einen Ersatz für
HTML: <a onclick="start(3);">mein dritter Link</a>
JS: start(nummer_des_Links){...}
Ich sehe hier eindeutig JS im Link.
Und wie genau sieht der Inhalt der Funktion „start“ aus?
Ich kann dir sagen, wie ihre Signatur aussieht:
function start(event)
Aha. Und der Inhalt?
Wenn ein Link geklickt wird, erhält sie nur das Event, nicht den Auslöser (sprich den Link).
Sie erhält einen Event? So wie ich das oben sehe erhält sie eine numerische Zeichenkette.
Die Frage ist, wie ich aus dem Event den Auslöser (also den tatsächlich geklickten Link) schlussfolgern kann.
Wenn du nun einmal den Inhalt von start() preis geben würdest, könnte ich besser beurteilen, ob dir this hier weiterhelfen kann.
Einen schönen Freitag noch.
Gruß, Mathias
Hallo Mathias,
erstmal danke dafuer, dass du offenbar genau wie ich immer abends/nachts aktiv bist und mir damit die letzten Tage sehr geholfen hast!
Aber irgendwie glaube ich, wir reden in diesem Thread gerade aneinander vorbei :-)
Das sieht in deinem Eröffnungungsposting aber anders aus:
Ich brauche also im Prinzip einen Ersatz für
HTML: <a onclick="start(3);">mein dritter Link</a>
JS: start(nummer_des_Links){...}Ich sehe hier eindeutig JS im Link.
Das steht deshalb erst am Ende meines Postings (im Nachtrag), weil das der herkoemmliche Weg ist - den ich aber nicht verwenden will, weil ich damit weiterhin HTML und JS vermischen muss.
Bei der beschriebenen Variante steht das "onclick" nicht zur Verfuegung!
Der Link sieht also so aus:
<a id="meinLink3">mein dritter Link</a>
Dafuer muss ich eine Funktion definieren (mittels JavaScript), die aufgerufen wird, sobald mit dem Link was passiert. Diese Verknuepfung "Funktion/Link" realisiere ich so:
document.{DOM-Pfad}.meinLink3 = start;
Erfolgt jetzt eine "Action" an dem Link, so wird automatisch die Funktion start() aufgerufen und ihr der Event übergeben:
function start(event) {...}
Und aus diesem Event möchte ich schließen, welcher Link geklickt wurde!
Vgl. auch http://de.selfhtml.org/javascript/objekte/event.htm, das Beispiel am Anfang und die Erläuterung.
Ein Workaround waere folgendes Konstrukt:
document.{DOM-Pfad}.meinLink3 = startLink3;
function startLink3(event)
{
start(document.{DOM-Pfad}.meinLink3;
}
function start(meinLink) {...}
Pro Link eine eigene Funktion - aber damit bekomme ich einen Wust von Code, schoen ist das nicht...
Hoffe, das war jetzt etwas klarer verstaendlich, als mein erster Beitrag.
Gruss,
Eddie
Hallo Eddie.
Aber irgendwie glaube ich, wir reden in diesem Thread gerade aneinander vorbei :-)
Ja, was aber hauptsächlich mein Fehler ist.
Der Link sieht also so aus:
<a id="meinLink3">mein dritter Link</a>
Dafuer muss ich eine Funktion definieren (mittels JavaScript), die aufgerufen wird, sobald mit dem Link was passiert. Diese Verknuepfung "Funktion/Link" realisiere ich so:
document.{DOM-Pfad}.meinLink3 = start;
Erfolgt jetzt eine "Action" an dem Link, so wird automatisch die Funktion start() aufgerufen und ihr der Event übergeben:
function start(event) {...}
Und da ich mich bisher mit dem event–Objekt noch nicht eingehender befasst habe, wusste ich darüber noch nicht sonderlich Bescheid.
Und aus diesem Event möchte ich schließen, welcher Link geklickt wurde!
Ich glaube nicht, dass dies möglich ist. Zumindest liefert keine der Eigenschaften des event–Objektes irgendetwas, was den angeklickten Link identifizieren würde.
Genaueres könnte dir sicher molily sagen; er kennt sich mit dem Eventhandling–Model besser aus.
(Wenn du nur wenigstens endlich einmal den Inhalt von start() bekannt geben würdest, könnte man vielleicht sagen, ob dein Vorhaben nicht auch anders umsetzbar ist.)
Einen schönen Samstag noch.
Gruß, Mathias
Der Link sieht also so aus:
<a id="meinLink3">mein dritter Link</a>
Dafuer muss ich eine Funktion definieren (mittels JavaScript), die aufgerufen wird, sobald mit dem Link was passiert. Diese Verknuepfung "Funktion/Link" realisiere ich so:
document.{DOM-Pfad}.meinLink3 = start;
Was bedeutet das genau?
Du weist hier einem Objektattribut eine Funktionsreferenz zu. Das klingt erstmal sinnlos, es sei denn das Attribut ist ein Eventhandler.
Erfolgt jetzt eine "Action" an dem Link, so wird automatisch die Funktion start() aufgerufen und ihr der Event übergeben:
Was ist "Aktion" warum sagst du nicht einfach was du machst, so läßt sich nur schwer erraten was du willst.
function start(event) {...}
Wenn die Aktion mit dem Link verbunden ist, dann ist in start this = link, da allerdings nicht klar ist, wann und wie du start aufrufst ist das nach wie vor Spekulation.
Und aus diesem Event möchte ich schließen, welcher Link geklickt wurde!
Ich verstehe dich zwar nicht, vermute aber, dass du evtl. ein document.onclick Event benutzt und dann rausfinden willst ob auf einen Link geklickt wurde, dazu findest du hier mehr:
http://www.quirksmode.org/js/events_properties.html#target
Struppi.
Hallo Struppi,
document.{DOM-Pfad}.meinLink3 = start;
Was bedeutet das genau?
Du weist hier einem Objektattribut eine Funktionsreferenz zu. Das klingt erstmal sinnlos, es sei denn das Attribut ist ein Eventhandler.
Da hast du natuerlich Recht, sorry! Also:
document.{DOM-Pfad}.meinLink3.onclick = start;
Was ist "Aktion" warum sagst du nicht einfach was du machst, so läßt sich nur schwer erraten was du willst.
"Action" ist das, was ein Event auslöst, in diesem Fall also ein Mausklick.
Benötigt wird das für die Tabs in folgendem Posting:
http://forum.de.selfhtml.org/my/
Wird so ein Link geklickt, so soll über die Funktionsreferenz die eigentliche Funktion aufgerufen werden (die natuerlich NICHT "start" heisst). Diese entscheidet dann, welcher Link, sprich welcher Tab, geklickt wurde und aktiviert diesen.
Ich verstehe dich zwar nicht, vermute aber, dass du evtl. ein document.onclick Event benutzt und dann rausfinden willst ob auf einen Link geklickt wurde, dazu findest du hier mehr:
http://www.quirksmode.org/js/events_properties.html#target
Cool, genau das hab ich gesucht!
Danke dir,
Eddie
document.{DOM-Pfad}.meinLink3 = start;
Was bedeutet das genau?
Du weist hier einem Objektattribut eine Funktionsreferenz zu. Das klingt erstmal sinnlos, es sei denn das Attribut ist ein Eventhandler.
Da hast du natuerlich Recht, sorry! Also:document.{DOM-Pfad}.meinLink3.onclick = start;
Dann ist this in der Funktion start() gleich dem Link.
Struppi.
Sorry Struppi,
falsche Posting-Adresse, nimm besser die hier:
https://forum.selfhtml.org/?t=135162&m=877160
Eddie