2016-03-22 9 views
0

So habe ich eine Funktion, die prompt s Benutzer für einen Wert (element0) und vergleicht diesen Wert mit einem bereits vorhandenen (elementIJ.name). Dieser Teil funktioniert OK, aber hier kommt die problematische Wendung: Ich möchte die Funktion etwas anderes tun, wenn die prompt abgebrochen wird (entweder durch Klicken auf Abbrechen oder Drücken der Esc-Taste, aber stattdessen sieht es aus wie die Funktion beendet wird . Ich habe Tests unter Verwendung alert ausgeführt, aber die Idee ist, tatsächlich andere Dinge zu tun. Hier ist mein Code:Javascript Aufforderung Abbrechen beendet Funktion

var element0 = prompt('Enter element name').toUpperCase() ; 
if (element0 == null || element0 == '' || element0 == false || !element0) { alert('ALERT!') ; } 
while (element0 !== elementIJ.name.toUpperCase()) 
    { 
    element0 = prompt('Try again').toUpperCase() ; 
    if (element0 === null || element0 === '' || element0 === false) { alert('ALERT!') ; } 
    } 
// ... do things for element0 === elementIJ.name.toUpperCase() 

Wie gesagt, das Bit ohne die if Aussagen funktioniert OK, es ist nur das prompt Cancelling, das nicht. Ich habe im Internet nach Antworten gesucht, aber es scheint, dass die meisten Leute das genaue Gegenteil von meinem Problem haben: dass sie wollen, dass das Abbrechen die Funktion beendet ... Also, was mache ich falsch?

Danke!

+4

Wenn Wenn Sie die Eingabeaufforderung abbrechen, wird "null" zurückgegeben und "toUpperCase()" wird fehlschlagen, wodurch eine Ausnahme ausgelöst und die Ausführung Ihrer Funktion beendet wird. –

+0

Sie sollten die Konsole immer auf Fehler überprüfen, wenn etwas nicht funktioniert. – forgivenson

+0

Danke, Frédéric, das war genau das Problem :) Verzeihung, könnten Sie mir sagen, wie das geht? Ich habe damit vor ein paar Wochen angefangen und mache jetzt meine Tests mit Brackets für das Schreiben und Chrome für das eigentliche Testen. –

Antwort

1

Sie können toUpperCase() in der ersten Zeile nicht ausführen, da element0 möglicherweise abgebrochen wird. Versuchen Sie folgendes:

bearbeiten bessere Antwort:

Hier ist ein eigentlich glaube ich, was Sie vorhatten: ersetzen 'TEST'

function promptTest(){ 
    var element0 = prompt('Enter element name'); 
    if (element0 == null || element0 == '' || element0 == false || !element0) { 
     alert('cancelled!') 
     return false; 
    } 
    else{ 
     return element0.toUpperCase(); 
    } 

} 

var promptVar = promptTest(); 
while (promptVar && promptVar !== 'TEST') 
{ 
    promptVar = promptTest(); 
} 

Alte Antwort:

var element0 = prompt('Enter element name'); 
if (element0 == null || element0 == '' || element0 == false || !element0) { 
    alert('ALERT!') ; 
} 
else{ 
    element0 = element0.toUpperCase() 
    console.log("element0: " + element0) 
    while (element0 !== elementIJ.name.toUpperCase()) 
    { 
     element0 = prompt('Try again').toUpperCase() ; 
     if (element0 === null || element0 === '' || element0 === false) { alert('ALERT!') ; } 
    } 
} 
+2

'wenn (element0)' sollte genug sein! – Rayon

+0

Perfekt! Vielen Dank! :) –