Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. [gelöst] Hilfe bei der Scripterstellung Eingabeüberprüfung

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.8k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.3k

[gelöst] Hilfe bei der Scripterstellung Eingabeüberprüfung

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
7 Beiträge 2 Kommentatoren 532 Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • StabilostickS Offline
    StabilostickS Offline
    Stabilostick
    schrieb am zuletzt editiert von
    #1

    Hi, ich bräuchte mal Hilfe mit Javascript. Bin da ein DAU. :(

    Folgender Aufbau: Zwei Felder zur Ausgabe, davon ein Zahlen- und ein Textfeld.

    Zwei Variablen zur Eingabe:

    let eins = '<testzeichenfolge>';

    let zwei = '<testzeichenfolge>';

    Bedingungen:

    0a. Zahl ist dann Zahl, wenn <testzeichenfolge>ganzzahlig und >= 0

    0b. Text ist dann Text, wenn <testzeichenfolge>ASCII-Zeichen oder einfache Steuerzeichen wie :/. mit dabei sind. Leerzeichen ist nicht dabei.

    Logik:

    1. Anwender gibt nichts ein ('')-> Text und Zahlenfeld sollen jeweils undefined sein

    2. Anwender gib nur eine Zahl ein -> Zahl ins Zahlenfeld, Text ist undefined

    3. Anwender gibt nur Text ein -> Zahl undefiniert, Text ins Textfeld

    4. Anwender gibt Zahl und Text ein -> Text ins Textfeld und Zahl ins Zahlenfeld

    5. Anwender gibt Text und Zahl ein -> Text ins Textfeld und Zahl ins Zahlenfeld

    6. Anwender gib zwei mal Zahl ein -> Fehler und Text- und Zahlenfeld undefined

    7. Anwender gibt zweimal Text ein -> Fehler und Text- und Zahlenfeld undefined

    Ausgabe:

    zahlenfeld = …

    textfeld = "..."

    Komme mit den ganzen if / parseInt(..., 10) / !== / NaN() einfach nicht klar.</testzeichenfolge></testzeichenfolge></testzeichenfolge></testzeichenfolge>

    1 Antwort Letzte Antwort
    0
    • StabilostickS Offline
      StabilostickS Offline
      Stabilostick
      schrieb am zuletzt editiert von
      #2

      Wo etwas wie

      eins='hallo';

      zwei=0;

      // Ist eins ein Text oder leer -> Fülle zwei mit eins und setze eins NULL

      // Ist zwei eine Zahl -> Fülle speicher mit eins, eins mit zwei, zwei mit speicher

      // ist eins eine Zahl -> konvertiere eins in Zahl

      text=zwei;

      zahl=eins;

      Vergesse ich das was? Ist meine Logik richtig?

      1 Antwort Letzte Antwort
      0
      • StabilostickS Offline
        StabilostickS Offline
        Stabilostick
        schrieb am zuletzt editiert von
        #3

        Was macht diese Zeile? Ich bitte um Hilfe.

        if (parseInt(eingabe, 10).toString() !== (eingabe || '').toString()) {
        

        Meine Vermutung:

        • parseInt(eingabe, 10).toString() versucht, aus eingabe eine Zahl zu machen und daraus einen String

        • (eingabe || '').toString() macht aus eingabe einen String

        • !== ist ein vollständiger Vergleich ohne Konvertierung der beiden Seiten auf Ungleichheit

        Also wird geprüft, ob eingabe eine Zahl ist. Wenn nein, wird der if-Block ausgeführt.

        Doch was ist, wenn eingabe die Zahl 0 ist? (eingabe || '').toString() ist da leer, oder?

        Wie funktioniert das mit der 0 in diesem Fall, damit das funktioniert? Wie muss das Statement umgeschrieben werden, damit 0 auch als gültige Zahl erkannt wird und sich sonst nichts an der Funktionalität ändert?

        1 Antwort Letzte Antwort
        0
        • paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von
          #4

          @Stabilostick:

          Wie funktioniert das mit der 0 in diesem Fall, damit das funktioniert? `
          Es wird vorausgesetzt, dass eingabe ein String ist. Mit '0' als Eingabewert funktioniert die Prüfung.

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

          1 Antwort Letzte Antwort
          0
          • StabilostickS Offline
            StabilostickS Offline
            Stabilostick
            schrieb am zuletzt editiert von
            #5

            eingabe wird mit einem Wert von argv[] (kommt von 'yargs') mit z.B. ~~[i]~~let eingabe = argv[2] initialisiert. Ich mag den Datentyp von eingabe nicht einfach ändern, da ich nicht weiß, was mit eingabe im weiteren Verlauf im Programm (nicht von mir) passiert.

            oder meinst du sowas wie

            if (parseInt(eingabe, 10).toString() !== (eingabe.toString() || '').toString()) {
            

            Kann das bei NULL oder anderen Zuständen für eingabe irgendwelche Probleme machen?

            1 Antwort Letzte Antwort
            0
            • paul53P Offline
              paul53P Offline
              paul53
              schrieb am zuletzt editiert von
              #6

              @Stabilostick:

              Kann das bei NULL oder anderen Zuständen für eingabe irgendwelche Probleme machen? `
              Ja, kann es. Versuche es so:

              if(eingabe === 0) eingabe = '0';
              if(parseInt(eingabe, 10).toString() !== (eingabe || '').toString()) {
              

              Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
              Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

              1 Antwort Letzte Antwort
              0
              • StabilostickS Offline
                StabilostickS Offline
                Stabilostick
                schrieb am zuletzt editiert von
                #7

                Danke. Gelöst.

                1 Antwort Letzte Antwort
                0
                Antworten
                • In einem neuen Thema antworten
                Anmelden zum Antworten
                • Älteste zuerst
                • Neuste zuerst
                • Meiste Stimmen


                Support us

                ioBroker
                Community Adapters
                Donate

                797

                Online

                32.4k

                Benutzer

                81.5k

                Themen

                1.3m

                Beiträge
                Community
                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                ioBroker Community 2014-2025
                logo
                • Anmelden

                • Du hast noch kein Konto? Registrieren

                • Anmelden oder registrieren, um zu suchen
                • Erster Beitrag
                  Letzter Beitrag
                0
                • Home
                • Aktuell
                • Tags
                • Ungelesen 0
                • Kategorien
                • Unreplied
                • Beliebt
                • GitHub
                • Docu
                • Hilfe