Verstehe nicht, warum es falsch ist?

3 Antworten

Der Grund, weshalb der Code nicht funktioniert, ist, dass Du den Wert von eingabeFeld.value nicht einer Variablen speicherst und dann darauf zugreifst:

let eingabeFeld = document.getElementById("field");

// Wert des „eingabeFeld“-Elements in die Variable „eingabeText“
// und diese anschließend überprüfen:

var eingabeText = eingabeFeld.value;
if (eingabeText.includes("huso1234")) {
    alert("Ja, das Passwort ist richtig");
} else {
    alert("Das Passwort ist falsch");
}

Du kannst auch, wie die anderen bereits sagten, eingabeFeld.value direkt in die if-Bedingung schreiben, um Dir eine Variablendefinierung zu ersparen:

// auf Eigenschaft „value“, also auf den Wert des
// „eingabeFeld“-Elements zugreifen und dann
// gleich überprüfen:

if (eingabeFeld.value.includes("huso1234")) {
    alert("Ja, das Passwort ist richtig");
} else {
    alert("Das Passwort ist falsch");
}

eingabeFeld.includes(…) ist hier nicht korrekt, da sich eingabeFeld auf das HTML-input-Element bezieht und nicht auf dessen Eingabewert. Deswegen muss .value ergänzt werden.

Eine Passwort-Kontrolle sollte jedoch eigentlich nicht mit includes() erfolgen, da diese Funktion überprüft, ob ein gegebener String in einem String enthalten ist. Somit wäre auch eine falsche Passwort-Eingabe wie schuso12345 gültig, da huso1234 als darin als sog. Substring vorkommt. Es sollte ein einfacher Vergleich mit === gemacht werden, sodass wirklich nur huso1234 gültig ist:

if (eingabeFeld.value === "huso1234") { … }

Ich und JavaScript sind zwar auch keine Freunde, aber ich habe eine Vermutung:

// loggen der Variabeln-Name für den Login-Button //
let loggen = document.getElementById("login");


loggen.addEventListener("click", function() {
    // eingabeFeld ist der Name für das Inputfeld //  
    let eingabeFeld = document.getElementById("field");


    if (eingabeFeld.value.includes("huso1234")) {
        alert("Ja, das Passwort ist richtig");
    }
    else {
        alert("Das Passwort ist falsch");
    }
    eingabeFeld.value = "";
});


Woher ich das weiß:eigene Erfahrung – Ich habe schon mal einen PC gestartet
eingabeFeld.value;

^^ Das möchtest du eine Zeile darunter in der If-Abfrage haben und nicht als eigenes Statement.

Ramazan79 
Fragesteller
 26.10.2023, 19:28

Hey Mann danke.

1