Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [gelöst] switch / case mit Wert aus state liefert undefined… wieso?

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    [gelöst] switch / case mit Wert aus state liefert undefined… wieso?

    This topic has been deleted. Only users with topic management privileges can see it.
    • T
      tempestas last edited by

      @BuZZy:

      var terminAnsage = parseInt(getState(idTerminvorschau).val);
      

      Gruß `

      Danke, teste ich sofort. Frage: wieso parseInt? Dachte, state als Number sollte dafür sorgen, dass es nicht notwendig ist?

      1 Reply Last reply Reply Quote 0
      • apollon77
        apollon77 last edited by

        @tempestas:

        Warum json.stringify?

        Arbeitet case switch nur mit strings? `

        Nein aber wenn der "state.val" undefined ist dann will ich wissen wie das gesamte State Objekt aussieht was zurückgegeben wird weil dort ggf eine Fehlermeldfung steht!

        Deswegen auch nur console.log Sollst ja nicht das benutzen, ich will die Ausgabe sehen

        1 Reply Last reply Reply Quote 0
        • T
          tempestas last edited by

          Buzzy: hat funktioniert, danke dir!

          Wäre ich im Leben nicht drauf gekommen.

          Bitte sag mir, dass du beruflich was mit IT machst, sonst habe ich das Gefühl, ich bin total verblödet (meine Lernkurve im vgl zu deiner 🙂 :oops:

          1 Reply Last reply Reply Quote 0
          • apollon77
            apollon77 last edited by

            Was kommt den raus? immer 0?

            Wenn der state.val===undefined ist kommt das immer eine 0 raus … in Meinen Augen also auch nicht unbedingt was DFu willst ... wie gesagt: wenn state.val===undefined

            1 Reply Last reply Reply Quote 0
            • BuZZy
              BuZZy last edited by

              @tempestas:

              Bitte sag mir, dass du beruflich was mit IT machst, sonst habe ich das Gefühl, ich bin total verblödet (meine Lernkurve im vgl zu deiner 🙂 :oops: ` Muss dich leider enttäuschen.. Bin gelernter KFZ Mechatroniker - habe der KFZ Branche aber den Rücken gekehrt und arbeite jetzt in einem Betrieb der ESG (Einscheiben Sicherheitsglas) herstellt.. Sitze hier im Büro und steuere die Produktion… :lol:

              Aber: kleiner Wehrmutstropfen.. Ich kümmere mich hier in der Firma auch um die IT.... So nebenbei.. :lol:

              @apollon77:

              Was kommt den raus? immer 0? ` Denke nicht, da er weder 0 noch undefined als Case im Switch block angegeben hat. Sonst hätte er (hoffe ich) nicht geschrieben dass es funktioniert. 😄

              Gruß

              1 Reply Last reply Reply Quote 0
              • T
                tempestas last edited by

                Apollon:

                parseInt hats gelöst.

                @ Buzzy: ok, nun fühle ich mich minderbemittelt :oops: :lol:

                Aber Frage: wie bist du drauf gekommen, dass es parseInt sein muss? Dachte, mit der deklaration des States als number wäre das Thema durch?

                parseInt hätte ich genutzt (bzw nutze ich in Skripten), wenn ich Zahlen aus strings extrahieren will

                Edit:

                Apollon:

                dein Hinweis liefert das hier:

                {"val":"\n3","ack":false,"ts":1516956173260,"q":0,"from":"system.adapter.cloud.0","lc":1516956173260}
                ````(hatte beim Testen jetzt die drei eingestellt)
                
                \n ist ein Zeilenumbruch imho. Das erklärt dann, warum parseInt das Thema löst. Wie der \n da rein kommt weiß ich aber nicht
                
                Edit 2:
                
                Das erklärt mir jetzt auch, warum im Log immer stand:
                
                

                javascript.0 2018-01-26 08:16:28.464 info 2 Tage eingestellt
                javascript.0 2018-01-26 08:16:28.464 info script.js.common.Ansage_Morgens: Terminvorschau wurde auf

                
                Seltsamerweise habe ich das aber nur, wenn ich mich per .pro einlogge.
                
                Gestern abend daheim war das Log ganz normal in einer Zeile geschrieben.
                
                Edit 3:
                
                Ahh klar, der Zeilenumbruch wird wohl aus dem VIS jqui select widget kommen. Dort stehen unter Werte ja
                
                1;
                
                2;
                
                3;
                
                verstanden! (hoffe ich)
                1 Reply Last reply Reply Quote 0
                • BuZZy
                  BuZZy last edited by

                  @tempestas:

                  Aber Frage: wie bist du drauf gekommen, dass es parseInt sein muss? Dachte, mit der deklaration des States als number wäre das Thema durch?

                  parseInt hätte ich genutzt (bzw nutze ich in Skripten), wenn ich Zahlen aus strings extrahieren will `

                  Wenn du````
                  log(typeof getState(idTerminvorschau).val);

                  
                  Obwohl der Datenpunkt als number im ioBroker definiert wurde.
                  
                  Deswegen musst du ihn in ein integer umwandeln..
                  
                  Hättest du case "1" ... case "2" ... gemacht hätte es wahrscheinlich auch funktioniert - ohne es vorher mit parseInt umzuwandeln.. ;) :)
                  
                  Gruß
                  1 Reply Last reply Reply Quote 0
                  • T
                    tempestas last edited by

                    ok danke.

                    Hier sind aber auch Füchse am Werk.

                    Gruß ebenfalls aus dem nördlichen Speckgürtel

                    1 Reply Last reply Reply Quote 0
                    • BuZZy
                      BuZZy last edited by

                      Ah warte mal, hab mir dein Script nochmal angesehen..````
                      createState('Ansage.Terminvorschau','1', { ... });

                      createState('Ansage.Terminvorschau',1, { ... });

                      (OHNE ' ' um den Wert 1 herum)..
                      
                      Dann hast du die 1 als Number drin stehen! ;)
                      
                      Jetzt ist wieder die Frage was schreibt VIS in den Datenpunkt.. Wahrscheinlich einen String, ich vermute da kommt auch der Zeilenumbruch \n her.. Also ist der Weg mit parseInt wohl unumgänglich.. (Weiß nicht ob man im VIS irgendwo einstellen kann dass nur number eingetragen werden soll im Datenpunkt..) :D
                      
                      Gruß
                      1 Reply Last reply Reply Quote 0
                      • T
                        tempestas last edited by

                        @BuZZy:

                        Ah warte mal, hab mir dein Script nochmal angesehen..````
                        createState('Ansage.Terminvorschau','1', { ... });

                        createState('Ansage.Terminvorschau',1, { ... });

                        (OHNE ' ' um den Wert 1 herum)..
                        
                        Dann hast du die 1 als Number drin stehen! ;)
                        
                        Jetzt ist wieder die Frage was schreibt VIS in den Datenpunkt.. Wahrscheinlich einen String, ich vermute da kommt auch der Zeilenumbruch \n her..
                        
                        Gruß `  
                        

                        Hi,

                        das ist ein C&P Fehler. Ich hatte zwischenzeitlich zum Testen mal auf string gestellt und dann die '' gesetzt. Vorher war es nur Number und ohne ''

                        Den Grund habe ich nun denke ich entdeckt, steht paar Postings weiter oben; Apollons Hinweis hat mich auf die Spur der Erklärung gebracht, dein Posting hats gelöst.

                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        804
                        Online

                        31.7k
                        Users

                        79.8k
                        Topics

                        1.3m
                        Posts

                        3
                        14
                        1145
                        Loading More Posts
                        • Oldest to Newest
                        • Newest to Oldest
                        • Most Votes
                        Reply
                        • Reply as topic
                        Log in to reply
                        Community
                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                        The ioBroker Community 2014-2023
                        logo