Also, ich erstelle ein Login-Formular, und wenn bestimmte Kriterien nicht erfüllt sind, nach dem Formular fortzusetzen, setze ich eine Variable zu testen nachdem ich alle Kriterien getestet habe. WENN diese Variable ($ cantcontinue) auf 'true' gesetzt ist, möchte ich eine Konsolennachricht mit den Kriterien senden, die nicht erfüllt sind. Hier ist mein Code:Wie setze ich eine JavaScript-Variable innerhalb einer for-Schleife, die danach verwendet wird
function testfields() {
// Ask if logging in or Creating Account
//Logging In:
if (document.getElementById("tEmail").style.display != "unset") {
var loginelements = ["Username", "Password"];
var text = "";
var i;
for (i = 0; i < loginelements.length; i++) {
//Check all fields are full:
if (document.getElementById(loginelements[i]).value == "") {
document.getElementById(loginelements[i]).style.background = '#ff6060'
var cantcontinue = true;
console.log(loginelements[i] + " is not set,")
} else {
document.getElementById(loginelements[i]).style.background = '#f7f7f7'
}
}
if ($cantcontinue != true) {
console.log("Create Account")
} else {
console.log("Could Not Create Account")
}
//Create a new Account:
} else {
var createelements = ["Username", "Password", "tEmaili", "tConfirmi"];
var text = "";
var i;
for (i = 0; i < createelements.length; i++) {
//Check all fields are full:
if (document.getElementById(createelements[i]).value == "") {
document.getElementById(createelements[i]).style.background = '#ff6060'
var cantcontinue = true;
console.log(createelements[i] + " is not set,")
} else {
document.getElementById(createelements[i]).style.background = '#f7f7f7'
}
}
//If passwords Match
if (document.getElementById("Password").value != document.getElementById("tConfirmi").value) {
var cantcontinue = true;
document.getElementById("tConfirmi").style.background = '#ff6060'
document.getElementById("tConfirmi").value = ''
console.log(" Passwords didn't Match,");
}
if ($cantcontinue != true) {
console.log("Create Account")
} else {
console.log("Could Not Create Account")
}
}
}
Sie sollten vermeiden, eine Variable zweimal im selben Umfang/Funktion (z. B. "var cantcontinue") zu definieren. Es empfiehlt sich, alle Variablendefinitionen nach der zweiten Zeile oben zu platzieren. :) Lesen Sie mehr über "hoisiting" hier https://github.com/getify/You-Dont-Know-JS/blob/master/scope%20%26%20closures/ch4.md oder suchen Sie nach diesem Begriff hier auf SO . – chaenu