Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Abfrage ob eine Variable leer ist

NEWS

  • Der neue Monatsrückblick für Mai und Juni 2026 ist online!
    BluefoxB
    Bluefox
    8
    1
    1.1k

  • wichtiges UPDATE für controller 7.2.2 im stable
    HomoranH
    Homoran
    10
    1
    3.6k

  • Neues YouTube-Video: Visualisierung im Devices-Adapter
    BluefoxB
    Bluefox
    16
    1
    6.2k

Abfrage ob eine Variable leer ist

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
6 Beiträge 2 Kommentatoren 3.7k Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • F Offline
    F Offline
    Fitti
    schrieb am zuletzt editiert von
    #1

    Hi zusammen,

    ich kann ja in JS mittels if (!variable){ … abfangen, ob eine Skript-Variable gesetzt ist.

    Nur wie kann ich eine ioBroker Javaskript Variable abfangen/fragen, ob diese keinen Wert hat?

    Ein

    ****if (!"javascript.0.meineVariable"){

    log("Nix found " );

    }****

    fragt ja nur ab, ob es diese gibt - aber nicht ob diese einen Wert hat.

    Ein

    if (getState("javascript.0.meineVariable").val) != "undefined" ){…. oder

    if (!getState("javascript.0.meineVariable").val) ){… oder

    if (typeof(getState("tankerkoenig.0.stations." + i + ".name").val) != "undefined" ){…

    lassen immer alle das Skript abbrechen, mit dem Hinweis

    TypeError: Cannot read property 'val' of null

    Ich will genau diesen Zustand in meinen Skripten abfangen, damit diese nicht immer wegknallen, wenn eine Variable nicht gesetzt ist, die ich aber auslesen möchte.

    Mit try, catch bekomme ich es hin - gibt es aber eine schönere Methode?

    Danke wie immer im Voraus,

    Fitti

    "Es wird die Zeit kommen, da ihr euch entscheiden müsst zwischen dem, was richtig ist, und dem, was bequem ist."
    Plural von Status ist auch Status!

    1 Antwort Letzte Antwort
    0
    • paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von
      #2

      Ab JS-Adapter-Version 2.3.1 wird es mit

      if (getState("javascript.0.meineVariable").val === null))
      

      funktionieren. Jetzt sollte es so funktionieren:

      if (!getState("javascript.0.meineVariable"))
      

      denn bei nicht vorhandenem State wird null geliefert.

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: Asus PN 42 / N100 / 8 GB / 500 GB; Proxmox mit 2 VM (iob / openCCU)

      1 Antwort Letzte Antwort
      0
      • F Offline
        F Offline
        Fitti
        schrieb am zuletzt editiert von
        #3

        @paul53:

        Ab JS-Adapter-Version 2.3.1 wird es mit

        if (getState("javascript.0.meineVariable").val === null))
        

        funktionieren. ` Klingt gut!
        @paul53:

        Jetzt sollte es so funktionieren:

        if (!getState("javascript.0.meineVariable"))
        

        denn bei nicht vorhandenem State wird null geliefert. `
        Leider nicht. Das Skript bricht dann ab.

        TypeError: Cannot read property 'val' of null

        Wenn es bald kommt, dann warte ich. Habe es ja mit try abgefangen. Sind nur unnötige Zeilen und liest sich schwerer.

        "Es wird die Zeit kommen, da ihr euch entscheiden müsst zwischen dem, was richtig ist, und dem, was bequem ist."
        Plural von Status ist auch Status!

        1 Antwort Letzte Antwort
        0
        • paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von
          #4

          @Fitti:

          TypeError: Cannot read property 'val' of null `
          Auf ".val" wird doch gar nicht zugegriffen :!:

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: Asus PN 42 / N100 / 8 GB / 500 GB; Proxmox mit 2 VM (iob / openCCU)

          1 Antwort Letzte Antwort
          0
          • F Offline
            F Offline
            Fitti
            schrieb am zuletzt editiert von
            #5

            @paul53:

            Auf ".val" wird doch gar nicht zugegriffen :!: `

            Nicht das ich hier zu umständlich denke… , aber..

            Ich möchte wissen, ob eine existierende Variable im javascript.0 Bereich/Scope oder wie man das nennen möchte, einen Wert hat oder ob diese leer ist.

            Nach meinen Tests ist es so, wenn ich .val nicht anfüge, dann teste ich auf das Vorhandensein der Variablen. Weiß aber immer noch nicht, ob der Wert undefiniert ist.

            <u>Hintergrund:</u>

            In einem JS legen wir mit CreateState eine Var an, diese hat aber dann gerne mal keinen Wert.

            Dann kommt eine erste Routine per on. oder schedule z. B., die erst mal diese Variable auslesen möchte. Das ist bei sehr vielen Skripten hier im Forum so. Das ist natürlich nicht sauber, kann aber jederzeit ja mal vorkommen. Dann knallt das Skript weg, da .val ein undefined zurückgibt.

            Dieses gilt es abzufangen. Ich will also genau dieses undefined umgehen oder abfangen. Also am liebsten gar nicht die Abfrage durchführen, wenn nicht möglich. Macht man ja eigentlich auch so.

            Bei einer internen Variable/Array geht das ja sehr einfach mittels if (!meineVar) {…INfo nö} else{so, alles okay,mach mal}.

            Mit try catch geht das ja sehr gut, aber etwas nervig.

            Oder habe ich hier einen Logikfehler?

            "Es wird die Zeit kommen, da ihr euch entscheiden müsst zwischen dem, was richtig ist, und dem, was bequem ist."
            Plural von Status ist auch Status!

            1 Antwort Letzte Antwort
            0
            • paul53P Offline
              paul53P Offline
              paul53
              schrieb am zuletzt editiert von
              #6

              @Fitti:

              TypeError: Cannot read property 'val' of null `
              Diese Meldung zeigt, dass getState(id) null liefert, also zu dieser id keine Zustände (states) vorhanden sind. Es ist so die Prüfung möglich, ohne dass es zu der Fehlermeldung kommt:

              if (getState("javascript.0.meineVariable")) x = getState("javascript.0.meineVariable").val;
              

              Stattdessen wird ein Warning-Log erzeugt und die JS-Variable x wird nicht verändert (bleibt so wie sie deklariert wurde).

              Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
              Produktiv: Asus PN 42 / N100 / 8 GB / 500 GB; Proxmox mit 2 VM (iob / openCCU)

              1 Antwort Letzte Antwort
              0

              Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

              Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

              Mit deinem Input könnte dieser Beitrag noch besser werden 💗

              Registrieren Anmelden
              Antworten
              • In einem neuen Thema antworten
              Anmelden zum Antworten
              • Älteste zuerst
              • Neuste zuerst
              • Meiste Stimmen


              Support us

              ioBroker
              Community Adapters
              Donate

              420

              Online

              33.0k

              Benutzer

              83.6k

              Themen

              1.3m

              Beiträge
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
              ioBroker Community 2014-2026
              logo
              • Anmelden

              • Du hast noch kein Konto? Registrieren

              • Anmelden oder registrieren, um zu suchen
              • Erster Beitrag
                Letzter Beitrag
              0
              • Home
              • Aktuell
              • Tags
              • Ungelesen 0
              • Kategorien
              • Unreplied
              • Beliebt
              • GitHub
              • Docu
              • Hilfe