NEWS
[gelöst] Javascript: Zugriff auf Unterelem. funktion. nicht
-
@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.
-
@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…
-
@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.
-
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" wiederFrage mich nur warum es vorher immer funktioniert hat.
Viele Grüße,
Artur
-
-
-
-
@loxdus sagte: Jetzt funktionieren die "Mülldaten" wieder
Welche Version des Javascript-Adapters verwendest Du?
-
@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.
-
@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.