Lukas.: JS: ReferenceError: myVar is not defined

Hallo Forum,

ich möchte über JS ein Chart einbinden. Der entsprechende Codeteil (php) lautet

        data: {
          url: './meinScriptBackend.php?aktion=test&einheit=' + myVar,
            mimeType: 'json',
            ...

Das funktioniert auch soweit sehr gut, zumindest wenn ich myVar zuvor über ein onclick-event setze. Bedeutet aber jedesmal einen Klick mehr. Ich würde gerne einen Defaultwert für myVar setzen, was mir aber misslingt. Somit erhaklte ich einen Fehler:

ReferenceError: myVar is not defined

Frage: Wie fange ich den Fehler ab? Ich habe versucht, mit if (myVar == null) sowie mit (typeof == 'undefined'), aber es gelingt mir trotzdem nicht, myVar ausschließlich einen Wert zuzuweisen, wenn es undefined ist. Alle derartigen Versuche enden darin, dass myVar immer diesen Defaultwert annimmt, auch wenn ich über das click-event einen ganz anderen angewählt hatte.

Luk

  1. Moin,

            data: {
              url: './meinScriptBackend.php?aktion=test&einheit=' + myVar,
                mimeType: 'json',
                ...
    

    das ist Javascript-Code (oder ein Stück davon), nicht PHP, wie du es markiert hast.

    Das funktioniert auch soweit sehr gut, zumindest wenn ich myVar zuvor über ein onclick-event setze. Bedeutet aber jedesmal einen Klick mehr. Ich würde gerne einen Defaultwert für myVar setzen, was mir aber misslingt.

    Wie machst du das denn? Ich würde ja einfach am Scriptanfang bzw. im load-Eventhandler die Variable einmalig(!) mit dem gewünschten Defaultwert initialisieren. Dann kann sie später beliebig oft als Reaktion auf Click-Events überschrieben werden, ist aber von Anfang an "vorhanden".

    Frage: Wie fange ich den Fehler ab?

    Gar nicht. ;-)
    Versuche nicht, den Fehler abzufangen, sondern sorge dafür, dass er gar nicht auftritt.

    So long,
     Martin

    --
    Bei der Umsetzung von guten Ideen hapert es meist viel mehr an der Wolle als an der Könne.
    1. Wie machst du das denn? Ich würde ja einfach am Scriptanfang bzw. im load-Eventhandler die Variable einmalig(!) mit dem gewünschten Defaultwert initialisieren. Dann kann sie später beliebig oft als Reaktion auf Click-Events überschrieben werden, ist aber von Anfang an "vorhanden".

      Dachte ich auch schon mal. Aber irgendwie finde ich die richtige Stelle nicht. Kann mir aber auch keiner helfen, ohne den Code zu kennen :-(

      Luk

      1. Hi,

        Kann mir aber auch keiner helfen, ohne den Code zu kennen :-(

        Was schließt Du daraus?

        off:PP

        --
        "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)
  2. Tach!

    Das funktioniert auch soweit sehr gut, zumindest wenn ich myVar zuvor über ein onclick-event setze.

    Das sieht auf den ersten Blick so aus, als ob du ein Reihenfolgenproblem hast. Die Variable ist zum Zeitpunkt der Verwendung entweder noch nicht oder nicht mehr oder aber auch in eonem anderen Scope definiert.

    Frage: Wie fange ich den Fehler ab?

    Indem du dir über die Abläufe klar wirst und dein Programm entsprechend gestaltest. Die Browser haben heutzutage alle Debugger eingebaut, mit denen man schrittweise durchs Programm laufen kann. Man kann auch Breakpoints setzen und schauen, wann sie angesprungen werden.

    dedlfix.

    1. Hi,

      Das sieht auf den ersten Blick so aus, als ob du ein Reihenfolgenproblem hast. Die Variable ist zum Zeitpunkt der Verwendung entweder noch nicht oder nicht mehr oder aber auch in eonem anderen Scope definiert.

      Ja, so ungefähr wars auch. Ich habs gelöst, hab nur grad leider zu wenig Zeit, es genau zu beschreiben. Ich bin etwas durcheinander gekommen, weil 3 Dateien hier ineinander gegriffen hatten...

      Luk