NEWS
[gelöst]js-typeof-befehl - was ist falsch daran?
-
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:
der inhalt (html-code):
<table><tr><td class="getprocessswap1" >9192kB  </td><td>/usr/bin/node</td></tr><tr><td class="getprocessswap1" >5088kB  </td><td>/usr/bin/node</td></tr><tr><td class="getprocessswap1" >2912kB  </td><td>/usr/sbin/nmbd</td></tr><tr><td class="getprocessswap1" >2061kB  </td><td>/usr/sbin/smbd</td></tr><tr><td class="getprocessswap1" >1863kB  </td><td>/usr/sbin/smbd</td></tr><tr><td class="getprocessswap1" >1829kB  </td><td>/usr/sbin/smbd</td></tr><tr><td class="getprocessswap1" >1805kB  </td><td>/usr/sbin/smbd</td></tr><tr><td class="getprocessswap1" >1688kB  </td><td>/sbin/dhclient</td></tr><tr><td class="getprocessswap1" >1304kB  </td><td>/usr/sbin/sshd</td></tr><tr><td class="getprocessswap1" >1285kB  </td><td>/usr/sbin/smbd</td></tr><tr><td class="getprocessswap1" >1267kB  </td><td>/usr/sbin/smbd</td></tr><tr><td class="getprocessswap1" >1216kB  </td><td>/lib/systemd/systemd</td></tr><tr><td class="getprocessswap1" >1120kB  </td><td>/usr/bin/redis-server</td></tr><tr><td class="getprocessswap1" >724kB  </td><td>/lib/systemd/systemd-journald</td></tr><tr><td class="getprocessswap1" >712kB  </td><td>/lib/systemd/systemd-logind</td></tr><tr><td class="getprocessswap1" >616kB  </td><td>/usr/sbin/rsyslogd</td></tr><tr><td class="getprocessswap1" >552kB  </td><td>/usr/bin/dbus-daemon</td></tr><tr><td class="getprocessswap1" >504kB  </td><td>/usr/bin/node</td></tr><tr><td class="getprocessswap1" >368kB  </td><td>/usr/sbin/cron</td></tr><tr><td class="getprocessswap1" >280kB  </td><td>/sbin/agetty</td></tr><tr><td class="getprocessswap1" >280kB  </td><td>/sbin/agetty</td></tr><tr><td class="getprocessswap1" >72kB  </td><td>/usr/sbin/cron</td></tr><t/able>
-
@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? -
@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
-
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); }
-
@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')