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]js-typeof-befehl - was ist falsch daran?

    NEWS

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    [gelöst]js-typeof-befehl - was ist falsch daran?

    This topic has been deleted. Only users with topic management privileges can see it.
    • liv-in-sky
      liv-in-sky last edited by liv-in-sky

      hätte frage zm typeof befehl

      warum wird dieser datenpunkt nicht als type string erkannt?

      if(typeof val1 === "string" && !val1.includes('span') && !val1.includes('class')) ...
      

      wenn ich den inhalt in z.b aaa ändere funktioniert es!?

      mein datenpunkt:
      Image 7.png

      der inhalt (html-code):

      <table><tr><td  class="getprocessswap1" >9192kB&emsp;&emsp;</td><td>/usr/bin/node</td></tr><tr><td  class="getprocessswap1" >5088kB&emsp;&emsp;</td><td>/usr/bin/node</td></tr><tr><td  class="getprocessswap1" >2912kB&emsp;&emsp;</td><td>/usr/sbin/nmbd</td></tr><tr><td  class="getprocessswap1" >2061kB&emsp;&emsp;</td><td>/usr/sbin/smbd</td></tr><tr><td  class="getprocessswap1" >1863kB&emsp;&emsp;</td><td>/usr/sbin/smbd</td></tr><tr><td  class="getprocessswap1" >1829kB&emsp;&emsp;</td><td>/usr/sbin/smbd</td></tr><tr><td  class="getprocessswap1" >1805kB&emsp;&emsp;</td><td>/usr/sbin/smbd</td></tr><tr><td  class="getprocessswap1" >1688kB&emsp;&emsp;</td><td>/sbin/dhclient</td></tr><tr><td  class="getprocessswap1" >1304kB&emsp;&emsp;</td><td>/usr/sbin/sshd</td></tr><tr><td  class="getprocessswap1" >1285kB&emsp;&emsp;</td><td>/usr/sbin/smbd</td></tr><tr><td  class="getprocessswap1" >1267kB&emsp;&emsp;</td><td>/usr/sbin/smbd</td></tr><tr><td  class="getprocessswap1" >1216kB&emsp;&emsp;</td><td>/lib/systemd/systemd</td></tr><tr><td  class="getprocessswap1" >1120kB&emsp;&emsp;</td><td>/usr/bin/redis-server</td></tr><tr><td  class="getprocessswap1" >724kB&emsp;&emsp;</td><td>/lib/systemd/systemd-journald</td></tr><tr><td  class="getprocessswap1" >712kB&emsp;&emsp;</td><td>/lib/systemd/systemd-logind</td></tr><tr><td  class="getprocessswap1" >616kB&emsp;&emsp;</td><td>/usr/sbin/rsyslogd</td></tr><tr><td  class="getprocessswap1" >552kB&emsp;&emsp;</td><td>/usr/bin/dbus-daemon</td></tr><tr><td  class="getprocessswap1" >504kB&emsp;&emsp;</td><td>/usr/bin/node</td></tr><tr><td  class="getprocessswap1" >368kB&emsp;&emsp;</td><td>/usr/sbin/cron</td></tr><tr><td  class="getprocessswap1" >280kB&emsp;&emsp;</td><td>/sbin/agetty</td></tr><tr><td  class="getprocessswap1" >280kB&emsp;&emsp;</td><td>/sbin/agetty</td></tr><tr><td  class="getprocessswap1" >72kB&emsp;&emsp;</td><td>/usr/sbin/cron</td></tr><t/able>
      
      AlCalzone 1 Reply Last reply Reply Quote 0
      • AlCalzone
        AlCalzone Developer @liv-in-sky last edited by

        @liv-in-sky sagte in js-typeof-befehl - was ist falsch daran?:

        warum wird dieser datenpunkt nicht als type string erkannt?

        Wo ist val1 definiert? Woran machst du fest, dass der Datenpunkt kein String ist?

        liv-in-sky 1 Reply Last reply Reply Quote 0
        • liv-in-sky
          liv-in-sky @AlCalzone last edited by liv-in-sky

          @AlCalzone weil ich es logge aber zum besseren verständnis der ganze teil (es handelt sich um ein geändertes script zu auslesen der redis states)

          var cacheSelectorState = $('state[state.id=javascript.0.*]');
          
          
          cacheSelectorState.each(function (id, i) {
              if (!id.includes('scriptEnabled') && !id.includes('scriptProblem') && !id.includes('Log-Script')  && !id.includes('Ereignisliste') && !id.includes('GETPROCESS') ){
              var val1 = getState(id).val;
                 if (val1 == null ) 
                    {log(id + " hat keinen state");} 
               else {var zk = "setState('"+id+"', "+val1 +");\n";
                     if(typeof val1 === "string" && !val1.includes('span') && !val1.includes('class')) {
                         zk = "setState('"+id+"', '"+val1+"');\n";
                         log(id + " -- " + val1 + " ----------- " + val1.includes('span'));
                         fs.appendFileSync(datei + logdate + "-"+ logtime + ".txt", zk);}
                     else {
                      log("KEIN STRING " +id + " -- " + val1);
                      fs.appendFileSync(datei + logdate + "-"+ logtime + ".txt", zk);}
                     };}
          });
          

          wie erwähnt - steht nur ein kleiner text drin wird es als string erkannt

          ich wollte gerne die html einträge nicht im ergebnis haben, deashalb versuche ich span und class zu finden und nicht zu schreiben

          1 Reply Last reply Reply Quote 0
          • AlCalzone
            AlCalzone Developer last edited by

            Das müsste eigentlich genau so funktionieren. Gebe doch mal für den State bei dem der Fehler (?) auftritt den Typ im Log aus:

            if (id === "dein-problematischer-state") {
                var val1 = getState(id).val;
                log(typeof val1);
            }
            
            liv-in-sky 1 Reply Last reply Reply Quote 0
            • liv-in-sky
              liv-in-sky @AlCalzone last edited by liv-in-sky

              @AlCalzone habe es mal so versucht - jetzt scheint es zu gehen - habe abfragen getrennt

                  var cacheSelectorState = $('state[state.id=controll-own.0.*]');
              cacheSelectorState.each(function (id, i) {
                  var val1 = getState(id).val;
                     if (val1 == null ) 
                        {log(id + " hat keinen state");} 
                   else {var zk = "setState('"+id+"', "+val1 +");\n";
                        /* if(typeof val1 === "string" ) {*/
                             /*if( val1.indexOf('bespiel') == -1 && val1.indexOf('class') == -1) {                  && ! val1.includes('beispiel') && ! val1.includes('class') */      
                             if( typeof val1 === "string") {
                             zk = "setState('"+id+"', '"+val1+"');\n";
                             log(id + " -- " + val1 + " ----------- " + val1.includes('span'));
                             if (val1.includes('span') || val1.includes('class')) {log("------------------------------------------------------------- span oder classn enthalten "+ id);} else {
                             fs.appendFileSync(datei + "-controll-own0-" + logdate + "-"+ logtime + ".txt", zk);}}
                         else {
                             log("KEIN STRING " +id + " -- " + val1);
                             fs.appendFileSync(datei + "-controll-own0-" + logdate + "-"+ logtime + ".txt", zk);}
                         };
              });
              
              

              irgendwie habe ich da was falsches gemacht?

              f(typeof val1 === "string" && !val1.includes('span') && !val1.includes('class')
              
              1 Reply Last reply Reply Quote 0
              • First post
                Last post

              Support us

              ioBroker
              Community Adapters
              Donate

              395
              Online

              31.6k
              Users

              79.5k
              Topics

              1.3m
              Posts

              javascript
              2
              5
              203
              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