pl: Fake Event

s. Thema. Beim Setzen eines Eventhandlers

document.getElementById('loadform').addEventListener('submit',loadtable);

wird ja eine Funktion benannt die das Event im Argument bekommt. Wenn ich diese Funktion ohne Event aufrufe, fehlt das Argument. Wie löst man sowas auf?

MFG

  1. Hallo pl,

    was möchtest du erreichen?

    Bis demnächst
    Matthias

    --
    Du kannst das Projekt SELFHTML unterstützen,
    indem du bei Amazon-Einkäufen Amazon smile (Was ist das?) nutzt.
  2. Wenn ich diese Funktion ohne Event aufrufe, fehlt das Argument. Wie löst man sowas auf?

    function bla(event) {
        if (typeof event === 'undefined') {
            // keinen Wert für event übergeben, entsprechend reagieren
        }
    }
    
  3. Hallo pl,

    keine Ahnung, was du vorhast, aber du kannst auch mit dispatchEvent selber Events feuern.

    Freundliche Grüße,
    Christian Kruse

    1. selber Events feuern.

      Na, man muss doch nicht gleich die Kündigung aussprechen..

      1. @@Sandraa

        selber Events feuern.

        Na, man muss doch nicht gleich die Kündigung aussprechen..

        Das sagt man so unter Jongleuren, es klingt nur für andere bekloppt.[1]

        LLAP 🖖

        --
        „Man kann sich halt nicht sicher sein“, sagt der Mann auf der Straße, „dass in einer Gruppe Flüchtlinge nicht auch Arschlöcher sind.“
        „Stimmt wohl“, sagt das Känguru, „aber immerhin kann man sich sicher sein, dass in einer Gruppe Rassisten nur Arschlöcher sind.“

        —Marc-Uwe Kling

        1. Sebastian Krämer, Die Welt braucht keine Jongleure ↩︎

  4. Moin,

    Beim Setzen eines Eventhandlers

    document.getElementById('loadform').addEventListener('submit',loadtable);
    

    wird ja eine Funktion benannt die das Event im Argument bekommt. Wenn ich diese Funktion ohne Event aufrufe, fehlt das Argument. Wie löst man sowas auf?

    von den bisherigen Vorschlägen halte ich den von Christian für den elegantesten. Ich könnte mir aber auch noch vorstellen, dem direkten Funktionsaufruf einfach ein selbstgebautes Dummy-Event mitzugeben.

    Allerdings frage ich mich auch: Wer macht sowas? Und wozu?

    So long,
     Martin

    --
    Ich stamme aus Ironien, einem Land am sarkastischen Ozean.
    1. Allerdings frage ich mich auch: Wer macht sowas? Und wozu?

      Es geht darum, Coderedundanzen zu vermeiden. MFG

      1. Hallo pl,

        TL;DR: Entkerne den Event-Handler und benutze den Kern an passender Stelle.

        Langfassung: Du hast offensichtlich das Problem A, einen Algorithmus X sowohl auf Grund eines Events als auch "manuell" durchzuführen.

        Als Lösung willst Du den Handler E des Events direkt aufrufen und ihm vorgaukeln, dass er ein Event bearbeiten würde. Das ist Problem B, und für das bittest Du um Hilfe.

        A-B Probleme behandelt man am besten, indem man B ignoriert und eine bessere Lösung für A sucht.

        Der Kern von Problem A ist: SRP (Single Responsibility Principle) wird nicht beachtet. Deine Eventhandler-Funktion E tut nämlich zwei Dinge: Auf das Event reagieren und Algorithmus X ausführen. Diese beiden Dinge schienen beim Schreiben des Handlers identisch zu sein, aber nun stellt sich heraus: sie sind es nicht.

        Die Lösung für Problem A besteht demnach darin, sich an SRP zu halten: Nimm X aus der Eventhandler-Funktion E heraus und mach eine eigene draus. E kümmert sich nur noch darum, die Daten aus dem Event-Objekt für X aufzubereiten und dann X aufzurufen. Eventuell muss E auch noch andere Dinge tun, die ausschließlich im Event-Kontext von Bedeutung sind (Steuern des Bubbling etc).

        An der Stelle, wo Du X brauchst, rufst Du X einfach passend auf.

        Rolf

        --
        sumpsi - posui - clusi
  5. s. Thema. Beim Setzen eines Eventhandlers

    document.getElementById('loadform').addEventListener('submit',loadtable);
    

    wird ja eine Funktion benannt die das Event im Argument bekommt. Wenn ich diese Funktion ohne Event aufrufe, fehlt das Argument. Wie löst man sowas auf?

    Mit loadtable(new Event('submit')), also manchmal sieht man den Wald vor lauter Bäumen nicht 😉

    1. Hallo pl,

      Mit loadtable(new Event('submit')), also manchmal sieht man den Wald vor lauter Bäumen nicht 😉

      Das klingt mir nicht nach einer Lösung für Problem A.

      Bis demnächst
      Matthias

      --
      Du kannst das Projekt SELFHTML unterstützen,
      indem du bei Amazon-Einkäufen Amazon smile (Was ist das?) nutzt.
    2. Hallo pl,

      auf diese Weise bekommst du ein custom event Objekt, kein submit event Objekt.

      Das ist das „Vorgaukeln“, von dem ich sprach, und das kann im Einzelfall seinen Zweck erfüllen.

      Für eine architektonisch saubere Lösung kann ich nur zum Entkernen raten.

      Rolf

      --
      sumpsi - posui - clusi