NEWS
[Hilfe]: javascript Variablen Übergabe. Globales Script??
-
Hallo, habe ein Problem mit der Übergabe von Variablen. Hauptproblem ist, das ich mich nicht wirklich auskenne mit javascript und mein Wissen hier aus dem Forum stammt.
Ich brauch in mehreren Scripten Datumsvariablen z.B. d, dm, dd usw.
schedule("5 0 * * *", function () { var d = new Date(); var dm = d.getMonth() +1; var dd = d.getDate(); var dJ = d.getFullYear(); //VorMonat als Namen Date.prototype.getFullMonth = function () { return (["Dezember", "Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November"])[this.getMonth()]; }; var VdM = d.getFullMonth(); });
Ich habe jetzt das ganze als globales Scritp erstellt, allerdings funktionieren die Variablen nicht in den normalen Scripten.
Den Hinweis habe ich gelesen zu globalen Variablen, aber nicht wirklich verstanden.
Wäre super, wenn mir jemand einen Tipp geben kann, wie ich das lösen kann.
Herzlichen Dank
Gruß Zippolighter -
Der Code aus globalen Skripten wird nur vor jedes "normale" Skript kopiert..
Beispiel: Du hast 1 globales Skript und 2 "normale"..
Globales Skript:
log('Das ist ein globales Skript');
Skript 1:
log('Das ist das erste normale Skript');
Skript 2:
log('Das ist das zweite normale Skript');
Die Skripts bleiben separat und kriegen nur das globale Skript vorne angestellt..
Der Code wird im Hintergrund jetzt also so aussehen:
Skript 1:log('Das ist ein globales Skript'); log('Das ist das erste normale Skript');
Skript 2:
log('Das ist ein globales Skript'); log('Das ist das zweite normale Skript');
Du wirst über States gehen müssen..
Also speichern mit setState(); und in anderen Skripten dann mit getState(); wieder auslesen..Gruß
-
Globale Skripte sind für häufig verwendete eigene Funktionen (mit Ergebnis-Rückgabe) gedacht. Globale Funktionen können aus jedem nicht globalen Skript aufgerufen werden. Die Bezeichner der globalen Funktionen sind für die gesamte JS-Instanz gültig (reserviert).
-
Beispiel für ein globales Script:
function deltaDays(date1, date2) { if(!date1 || !date2) return null; var check1 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate()); var check2 = new Date(date2.getFullYear(), date2.getMonth(), date2.getDate()); return Math.round(Math.abs(check1 - check2) / (1000 * 60 * 60 * 24 )); }
und dann der Aufruf in einem normales Script
var gAnzTage = deltaDays((new Date()), (new Date(getState("javascript.0.LetzterBatteriewechsel").val))));
Vielleicht wird es dadurch klarer. Mir persönlich helfen immer konkrete Beispiele.
In diesem Fall ermittle ich über die Funktion im globalen Script die Anzahl der Tage zwischen zwei Datum und nutze es dafür um den Lebenszyklus meiner Batterien zu ermitteln. -
@htrecksler sagte:
Mir persönlich helfen immer konkrete Beispiele.
Das einzige von mir verwendete globale Skript:
function runden(wert, stellen) { return Math.round(wert * Math.pow(10, stellen)) / Math.pow(10, stellen); }