Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. [gelöst] Javascript: Zugriff auf Unterelem. funktion. nicht

    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] Javascript: Zugriff auf Unterelem. funktion. nicht

    This topic has been deleted. Only users with topic management privileges can see it.
    • OliverIO
      OliverIO @LoxDUS last edited by

      @loxdus sagte in Javascript: Zugriff auf Unterelement funktioniert nicht mehr:

      Hallo,

      habe heute so einige Adapter aktualisiert und jetzt funktioniert ein script nicht mehr das auf die Daten aus ical (Google Kalender) zugreift. Vielleicht habt ihr einen Tip für mich:

      Ich lese mit

      var termine = getState("ical.0.data.table").val;
      

      in termine die aktuellen termine ein. Da steht dann genau das hier drin:

       [{"date":"05.08.2021 ","event":"DUS Restmüll Vollservice (Tonne)","_class":"ical_Muellabfuhr ical_today","_date":"2021-08-04T22:00:00.000Z","_end":"2021-08-05T22:00:00.000Z","_section":"AWISTA\nGesellschaft für Abfallwirtschaft\nund Stadtreinigung mbH\n \nHöherweg 100\n40233 Düsseldorf","_IDID":"160871023933@muellmax.de","_allDay":true,"_private":false,"_rule":" ","location":"Meine Stadt, Meine Adresse","_calName":"Muellabfuhr","_calColor":"#000000"},{"date":"11.08.2021 ","event":"DUS Altpapier Teilservice (Tonne)","_class":"ical_Muellabfuhr ical_6days","_date":"2021-08-10T22:00:00.000Z","_end":"2021-08-11T22:00:00.000Z","_section":"AWISTA\nGesellschaft für Abfallwirtschaft\nund Stadtreinigung mbH\n \nHöherweg 100\n40233 Düsseldorf","_IDID":"160871023997@muellmax.de","_allDay":true,"_private":false,"_rule":" ","location":"Meine Stadt, Meine Adresse","_calName":"Muellabfuhr","_calColor":"#000000"},{"date":"12.08.2021 ","event":"DUS Restmüll Vollservice (Tonne)","_class":"ical_Muellabfuhr ical_oneweek","_date":"2021-08-11T22:00:00.000Z","_end":"2021-08-12T22:00:00.000Z","_section":"AWISTA\nGesellschaft für Abfallwirtschaft\nund Stadtreinigung mbH\n \nHöherweg 100\n40233 Düsseldorf","_IDID":"160871023934@muellmax.de","_allDay":true,"_private":false,"_rule":" ","location":"Meine Stadt, Meine Adresse","_calName":"Muellabfuhr","_calColor":"#000000"},{"date":"18.08.2021 ","event":"DUS Leichtverpackung Vollservice (Tonne)","_class":"ical_Muellabfuhr ","_date":"2021-08-17T22:00:00.000Z","_end":"2021-08-18T22:00:00.000Z","_section":"AWISTA\nGesellschaft für Abfallwirtschaft\nund Stadtreinigung mbH\n \nHöherweg 100\n40233 Düsseldorf","_IDID":"160871023971@muellmax.de","_allDay":true,"_private":false,"_rule":" ","location":"Meine Stadt, Meine Adresse","_calName":"Muellabfuhr","_calColor":"#000000"},{"date":"19.08.2021 ","event":"DUS Restmüll Vollservice (Tonne)","_class":"ical_Muellabfuhr ","_date":"2021-08-18T22:00:00.000Z","_end":"2021-08-19T22:00:00.000Z","_section":"AWISTA\nGesellschaft für Abfallwirtschaft\nund Stadtreinigung mbH\n \nHöherweg 100\n40233 Düsseldorf","_IDID":"160871023935@muellmax.de","_allDay":true,"_private":false,"_rule":" ","location":"Meine Stadt, Meine Adresse","_calName":"Muellabfuhr","_calColor":"#000000"},{"date":"25.08.2021 ","event":"DUS Altpapier Teilservice (Tonne)","_class":"ical_Muellabfuhr ","_date":"2021-08-24T22:00:00.000Z","_end":"2021-08-25T22:00:00.000Z","_section":"AWISTA\nGesellschaft für Abfallwirtschaft\nund Stadtreinigung mbH\n \nHöherweg 100\n40233 Düsseldorf","_IDID":"160871023998@muellmax.de","_allDay":true,"_private":false,"_rule":" ","location":"Meine Stadt, Meine Adresse","_calName":"Muellabfuhr","_calColor":"#000000"},{"date":"26.08.2021 ","event":"DUS Restmüll Vollservice (Tonne)","_class":"ical_Muellabfuhr ","_date":"2021-08-25T22:00:00.000Z","_end":"2021-08-26T22:00:00.000Z","_section":"AWISTA\nGesellschaft für Abfallwirtschaft\nund Stadtreinigung mbH\n \nHöherweg 100\n40233 Düsseldorf","_IDID":"160871023936@muellmax.de","_allDay":true,"_private":false,"_rule":" ","location":"Meine Stadt, Meine Adresse","_calName":"Muellabfuhr","_calColor":"#000000"},{"date":"01.09.2021 ","event":"DUS Leichtverpackung Vollservice (Tonne)","_class":"ical_Muellabfuhr ","_date":"2021-08-31T22:00:00.000Z","_end":"2021-09-01T22:00:00.000Z","_section":"AWISTA\nGesellschaft für Abfallwirtschaft\nund Stadtreinigung mbH\n \nHöherweg 100\n40233 Düsseldorf","_IDID":"160871023972@muellmax.de","_allDay":true,"_private":false,"_rule":" ","location":"Meine Stadt, Meine Adresse","_calName":"Muellabfuhr","_calColor":"#000000"},{"date":"02.09.2021 ","event":"DUS Restmüll Vollservice (Tonne)","_class":"ical_Muellabfuhr ","_date":"2021-09-01T22:00:00.000Z","_end":"2021-09-02T22:00:00.000Z","_section":"AWISTA\nGesellschaft für Abfallwirtschaft\nund Stadtreinigung mbH\n \nHöherweg 100\n40233 Düsseldorf","_IDID":"160871023937@muellmax.de","_allDay":true,"_private":false,"_rule":" ","location":"Meine Stadt, Meine Adresse","_calName":"Muellabfuhr","_calColor":"#000000"}]
      

      Jetzt wurde bisher immer mit diesem Code in den Einträgen gesucht:

      for (var i in termine) {
           //   Bio
           //   Restmüll
           //   Papier
           //   Gelbe
              
              var termin = termine[i];
      
              // suchen nach dem nächsten Termin der "Restmüll" enthält.
              log("###");
              // console.log(termin.event); // Debugging für Inhalt im Event Text
              // console.log(termin.date); // Debugging Inhalt Date
      
              if (termin.event.includes("Restmüll") && terminRest == "") {
                  terminRest = convertToEngDate(termin.date);
                  DDRest = dateDiff(terminRest);
                  if(DDRest<=1)
                      RestAllert = " alert";
                  else
                      RestAllert = " normal";
                  log("Rest: "+ terminRest);
              }
      
       ... Weiterer Code ...
      
      }
      

      Seit dem Update mekert JavaScript aber das

      script.js.common.Muellkalender: TypeError: Cannot read property 'includes' of undefined
      javascript.0 (27876) at updateMuellTermine (script.js.common.Muellkalender:55:26)
      

      und das ist genau die Zeile s.O.

      if (termin.event.includes("Restmüll") && terminRest == "") {
      

      Könnt ihr mir sagen warum er das auf einmal nicht mehr erkennt oder warum termin.event.includes nicht mehr funktioniert? In der Variablen termin, steht jetzt auch nur noch das erste Zeichen von termine, also "[" drinne. Ich vermute Javascript erkennt die Objektstruktur in Java nicht mehr (oder wie man das nennt) und interpretiert das jetzt als String und gibt mit dem Befehl halt das erste Zeichen aus.

      Hat jemand ein Tipp für mich? Bisher hat der Code immer funktioniert.

      Vielen Dank,

      Artur

      includes ist eine funktion eines arrays.
      bei der fehlermeldung ist die variable termin.event nicht gefüllt (also = undefined), da undefined kein typ ist, erkennt js auch die funktion includes nicht.

      es sieht so aus, das bei dem einlesen des Kalenders ein fehler passiert und er die Daten nicht erkennt. Eigentlich müsste es dann schon vorher einen Fehler gegeben habe.

      Da der Inhalt nach JSON aussieht, müsste diese Zeile dann nicht wie folgt heißen?

      var termine = JSON.parse(getState("ical.0.data.table").val);
      

      Diese macht aus einem JSON-String ein javascript objekt.

      paul53 L 2 Replies Last reply Reply Quote 0
      • cash
        cash Most Active last edited by

        @loxdus Du hast den ical aktualisiert. Dort gab es lt. Changellog ein Breaking Change. Das heißt Du solltest Dir das mal durchlesen und dann dein Script anpassen. Weiß leider nicht wie genau Du es ändern musst sollte aber mittels google schnell zu finden sein…

        L 1 Reply Last reply Reply Quote 0
        • paul53
          paul53 @OliverIO last edited by

          @oliverio sagte: Diese macht aus einem JSON-String ein javascript objekt.

          Wenn common.type = "array" ist, macht das ab Version 5.2.0 schon der Javascript-Adapter.

          L 1 Reply Last reply Reply Quote 0
          • L
            LoxDUS @OliverIO last edited by

            Da der Inhalt nach JSON aussieht, müsste diese Zeile dann nicht wie folgt heißen?

            var termine = JSON.parse(getState("ical.0.data.table").val);
            

            Diese macht aus einem JSON-String ein javascript objekt.

            Genau das war es!
            Jetzt funktionieren die "Mülldaten" wieder 😉

            Frage mich nur warum es vorher immer funktioniert hat.

            Viele Grüße,

            Artur

            paul53 1 Reply Last reply Reply Quote 0
            • L
              LoxDUS @cash last edited by

              @cash Ja, mit der Antwort von @OliverIO hat es dann geklappt. Durch das Umwandeln in ein javascript Objekt hat es dann funktioniert.

              Danke für Deinen Hinweis.

              Viele Grüße,

              Artur

              1 Reply Last reply Reply Quote 0
              • L
                LoxDUS @paul53 last edited by

                @paul53 Mit dem Hinweis von @OliverIO hat es geklappt. Der Wert musste in ein javascript Objekt umgewandelt werden.

                Viele Grüße und danke,

                Artur

                1 Reply Last reply Reply Quote 0
                • L
                  LoxDUS @Homoran last edited by

                  Hallo @homoran, ich weiß leider nicht wie der Inhalt des DP vorher aussah, ist schon zu lange her das ich mir den angesehen habe. Aber anscheinend will javascript jetzt ein expliziten Typen haben. Mit dem Hinweis von @OliverIO hats dann funktioniert.

                  Vielen Dank,

                  Artur

                  1 Reply Last reply Reply Quote 0
                  • paul53
                    paul53 @LoxDUS last edited by

                    @loxdus sagte: Jetzt funktionieren die "Mülldaten" wieder

                    Welche Version des Javascript-Adapters verwendest Du?

                    L 1 Reply Last reply Reply Quote 0
                    • L
                      LoxDUS @paul53 last edited by

                      @paul53 Ich verwende altuell die Version 5.1.3. Habe eben gesehen das es schon wieder eine neue Version gibt. Werde die später mal nehmen.

                      40b6a9dd-8bfb-440d-9d23-9dbdba06697c-image.png

                      paul53 1 Reply Last reply Reply Quote 0
                      • paul53
                        paul53 @LoxDUS last edited by

                        @loxdus sagte: Habe eben gesehen das es schon wieder eine neue Version gibt.

                        Mit dieser Version muss das wieder rückgängig gemacht werden:

                        @loxdus sagte in [gelöst] Javascript: Zugriff auf Unterelem. funktion. nicht:

                        Der Wert musste in ein javascript Objekt umgewandelt werden.

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        849
                        Online

                        31.8k
                        Users

                        80.0k
                        Topics

                        1.3m
                        Posts

                        5
                        12
                        402
                        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