Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. [Hilfe]: javascript Variablen Übergabe. Globales Script??

    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

    [Hilfe]: javascript Variablen Übergabe. Globales Script??

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

      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

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

        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ß

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

          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).

          1 Reply Last reply Reply Quote 0
          • htrecksler
            htrecksler Forum Testing last edited by

            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.

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

              @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);
              }
              
              1 Reply Last reply Reply Quote 1
              • First post
                Last post

              Support us

              ioBroker
              Community Adapters
              Donate

              869
              Online

              31.9k
              Users

              80.1k
              Topics

              1.3m
              Posts

              4
              5
              667
              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