Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. benötige Hilfe bei Funktionsaufruf

    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

    benötige Hilfe bei Funktionsaufruf

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

      ich drehe mich gerade bei dieser Function im Kreis und benötige Hilfe.

      Bei Anruf soll geprüft werden ob die Nummer des Anrufers in "tr-064.0.callForwarding" eingestellt wurde.
      In meine Testfall "0400000", beginnt mit "040" -- sollte also mit TRUE zurückgegeben werden.

      2036e60e-0ce4-489a-9944-df9ed27ead45-image.png

      Ich verstehe nicht ..
      a. nicht weshalb hier "undefined" trotz Treffer zurückgegeben wird (hätte "true" erwartet) und
      b. weshalb die Schleife trotz Treffer bis ende durchlaufen wird.

      23:18:31.654	info	javascript.0 (546) script.js.TEST.test-do_while: ---------------------------------
      23:18:31.658	info	javascript.0 (546) script.js.TEST.test-do_while: i:5 fromNumber 040 ->
      23:18:31.659	info	javascript.0 (546) script.js.TEST.test-do_while: Ausgabe: undefined
      23:18:31.659	info	javascript.0 (546) script.js.TEST.test-do_while: ---------------------------------
      
      log ("---------------------------------");
      log ("Ausgabe: " + isCallForwarding("0400000"));
      log ("---------------------------------");
      
      var objects = [];
      function isCallForwarding(eingehend) {
          $('tr-064.0.callForwarding.*').each(function (id, i) {
              var obj = getObject(id);  
              var arr = obj.common.name.split(" ");
              if (arr[0] == "fromNumber" && arr[2] == "->") {
                  if (eingehend.startsWith(arr[1])) {
                      console.log("i:"+i + " " +obj.common.name);                
                      return true;
                  }
              }
          });
      };
      

      Danke !

      Asgothian 1 Reply Last reply Reply Quote 0
      • Asgothian
        Asgothian Developer @YunaKato last edited by Asgothian

        @yunakato Du hast nicht eine sondern 2 Funktionen:

        Innerhalb der Funktion 'isCallForwarding' rufst du für jedes Objekt deines Selektors die eine unbenannte Inline Funktion auf. Dein Return bezieht sich nur auf die Inline Funktion.

        Es gibt 2 Optionen das zu lösen:

        log ("---------------------------------");
        log ("Ausgabe: " + isCallForwarding("0400000"));
        log ("---------------------------------");
         
        var objects = [];
        function isCallForwarding(eingehend) {
            var Result = false;
            $('tr-064.0.callForwarding.*').each(function (id, i) {
                var obj = getObject(id);  
                var arr = obj.common.name.split(" ");
                if (arr[0] == "fromNumber" && arr[2] == "->") {
                    if (eingehend.startsWith(arr[1])) {
                        console.log("i:"+i + " " +obj.common.name);                
                        Result = true;
                    }
                }
            });
           return Result;
        };
        
        log ("---------------------------------");
        log ("Ausgabe: " + isCallForwarding("0400000"));
        log ("---------------------------------");
         
        var objects = [];
        function isCallForwarding(eingehend) {
            const IDs =  $('tr-064.0.callForwarding.*');
            var I=1;
            for (const id of IDs)
            {
                  const obj = getObject(id);  
                  const arr = obj.common.name.split(" ");
                  if (arr[0] == "fromNumber" && arr[2] == "->") {
                      if (eingehend.startsWith(arr[1])) {
                          console.log("i:"+i + " " +obj.common.name);                
                          return true;
                      }
                  }
                 i++
              }
        };
        

        A.

        YunaKato 1 Reply Last reply Reply Quote 1
        • YunaKato
          YunaKato @Asgothian last edited by

          @asgothian

          vielen Dank ! Kapiert 🙂 die beiden Beispiele haben mich einen riesen Schritt weitergebracht.

          Variante 2: wäre es eventuell noch sinnvoll diesen Selektor schon am Anfang des Scripts zu 1x definieren als bei jedem Aufruf neu aufzubauen oder ist das eher unüblich? Natürlich muss man sich dann um Aktualisierung kümmern.

          LG Yun

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

            @yunakato sagte: sinnvoll diesen Selektor schon am Anfang des Scripts zu 1x definieren

            Ja. Oder werden immer wieder Datenpunkte gelöscht und neue erstellt?

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

              @paul53 sagte in benötige Hilfe bei Funktionsaufruf:

              der werden immer wieder Datenpunkte gelöscht und neue erstellt?

              also eher selten, vielleicht 1-2 x pro Jahr wenn ich einen Intervall benennen müsste.

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

              Support us

              ioBroker
              Community Adapters
              Donate

              535
              Online

              31.8k
              Users

              80.0k
              Topics

              1.3m
              Posts

              3
              5
              258
              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