So habe ich ein ziemlich einfaches Quiz, bestehend aus 7 Auswahlfeldern und einem Absenden-Button. Was ich versuche zu erreichen, besteht darin, einen Warnfehler auftauchen zu lassen, wenn keines der Auswahlfelder geändert wurde und wenn es geändert wurde, damit es den Punktestand anzeigt.Funktion nimmt geänderte Variable nicht auf, ist sie nicht global?
Ich habe eine Variable namens "geändert" eingerichtet, die falsch ist. Wenn eines dieser Auswahlfelder geändert wird, wird "geändert" zu "wahr" ...
Das funktioniert und ich habe ein Konsolenprotokoll, das mir zeigt, wie es funktioniert, aber wenn der Submit-Button gedrückt wird, ruft die Funktion die Scores auf oder die Warnung scheint nicht zu erkennen, dass sich "geändert" in TRUE geändert hat.
Heres die JQuery ...
var changed = false;
$('select').on('change', function() {
var changed = true;
console.log('TRUE');
});
$("#button").click(function(){
var correct = 0;
var selectValue;
var questions = document.getElementsByClassName("question");
var numOfQuestions = questions.length;
for(var i = 0; i < questions.length; i++){//begin for loop
//get the value of the select element
selectValue = questions[i].options[questions[i].selectedIndex].value;
//if the value equals right
if(selectValue === "right"){//begin if then
//increment the correct variable
correct++;
}//end if then
}//end for loop
if(changed === false){
$('#scoreDisplay span').append('WARNING');
}
else{
$('#scoreDisplay span').append(correct);
}
});
Sie es hier in Aktion sehen können, aber Sie werden es sehen zeigt nur ‚Warnung‘, wenn Sie auf Senden klicken, und zwar unabhängig davon, ob Sie alle Auswahlboxen geändert haben ... http://gogeye.com/connectquiz/index.html
Ändern Sie 'var changed = true;' zu 'changed = true;'. Sie deklarieren es dort im lokalen Umfang. – Aeolingamenfel
Tu was @Aeolingamenfel gesagt hat. Der Grund dafür ist, dass Sie eine lokale Version desselben Namens erstellen, wenn Sie eine Variable davor setzen, und dass JavaScript standardmäßig die lokale Version anstelle der globalen Version verwendet. – nurdyguy