2017-07-30 3 views
0

Ich habe versucht, einen Passwortgenerator zu machen, und ich habe diesen Code und es gibt "undefined" kein Zeichen zurück. Der Code soll 16 Zeichen mit Zahlen, unteren und oberen Zeichen zurückgeben. Ich möchte dies haben, damit ich mir keine Sorgen mehr machen muss, meine eigenen Passwörter zu erstellen.Wie man Schalter in JavaScript verwendet

<!DOCTYPE html> 
 
<html> 
 

 
<head> 
 
    <meta charset="UTF-8"> 
 
    <title>PassGen</title> 
 
    <script> 
 
    function getRandomInt(min, max) { 
 
     return Math.floor(Math.random() * (max - min + 1)) + min; 
 
    } 
 

 
    function num2lett(num) { 
 
     switch (num) { 
 
     case (num > 36): 
 
      return String.fromCharCode(577 + num - 35); 
 
      break; 
 
     case (num > 10 && num < 37): 
 
      return String.fromCharCode(97 + num - 11); 
 
      break; 
 
     case (num == 10): 
 
      return "0"; 
 
      break; 
 
     case (num < 10): 
 
      return "" + num; 
 
      break; 
 
     } 
 

 
    } 
 

 
    function uuidMake() { 
 
     var uuid = ""; 
 
     for (u = 0; u < 16; u++) { 
 
     randNum = getRandomInt(0, 62); 
 
     uuid += num2lett(randNum); 
 
     } 
 
     document.getElementById("password").innerHTML = uuid; 
 
    } 
 
    </script> 
 
    <style> 
 
    @font-face { 
 
     font-family: "uuid_font"; 
 
     src: url("Courier Prime Code.ttf") format("TrueType"); 
 
    } 
 
    
 
    body { 
 
     background-color: #262626; 
 
    } 
 
    
 
    #password { 
 
     font-family: "uuid_font"; 
 
     text-align: center; 
 
     font-size: 30px; 
 
     color: #dddddd; 
 
     margin-top: 250px; 
 
    } 
 
    </style> 
 

 
    <body> 
 
    <p id="password" onclick="uuidMake();">Click Me</p> 
 
    </body> 
 

 
</html>

Antwort

1

Sie können nicht case-Anweisungen wie verwenden, wenn sonst so verwenden nur, wenn sonst Bedingung, damit, wie folgendes Beispiel arbeiten.

function getRandomInt(min, max) { 
 
    return Math.floor(Math.random() * (max - min + 1)) + min; 
 
} 
 

 
function num2lett(num) { 
 
    if (num > 36) 
 
    return String.fromCharCode(577 + num - 35); 
 
    else if (num > 10 && num < 37) 
 
    return String.fromCharCode(97 + num - 11); 
 
    else if (num == 10) 
 
    return "0"; 
 
    else if (num < 10) 
 
    return "" + num; 
 
} 
 

 
function uuidMake() { 
 
    var uuid = ""; 
 
    for (u = 0; u < 16; u++) { 
 
    randNum = getRandomInt(0, 62); 
 
    uuid += num2lett(randNum); 
 
    } 
 
    document.getElementById("password").innerHTML = uuid; 
 
}
@font-face { 
 
    font-family: "uuid_font"; 
 
    src: url("Courier Prime Code.ttf") format("TrueType"); 
 
} 
 

 
body { 
 
    background-color: #262626; 
 
} 
 

 
#password { 
 
    font-family: "uuid_font"; 
 
    text-align: center; 
 
    font-size: 30px; 
 
    color: #dddddd; 
 
    margin-top: 250px; 
 
}
<p id="password" onclick="uuidMake();">Click Me</p>

Was ist Ihr Algorithmus ist, weiß ich nicht so bin ich umgerechnet nur Ihr Algorithmus, wenn sonst

+0

Die meisten davon funktioniert, ich bin ein bisschen besorgt über die Kappen Briefe, aber eine Idee, wie man das beheben? Ich glaube, es war 577 (Unicode) –

+0

Derp der alt-Code ist 65 nicht 577. –

+0

Ersetzen Sie diese Zeile zuerst, wenn Bedingung von dieser Zeile ** if (num> 36) zurückgeben String.fromCharCode (65 + num - 35); ** –

1

Im switch Block, Sie bedingte Anweisungen in der case geschrieben haben.

Sie können im Block switch keine bedingten Anweisungen verwenden. Daher wird in Ihrem Fall keiner der case ausgeführt. Da Sie keinen default Block haben, gibt Ihre Funktion nichts zurück, was im Fall von Javascript undefined ist. Daher erhalten Sie undefined

2

Dies ist kein guter Anwendungsfall für switch. Verwenden Sie die Anweisungen if und else.

Die case s in einer switch Anweisung sind spezifische mögliche Werte des Ausdrucks, dass Sie switch ing on sind. Zum Beispiel könnte schreiben eine so etwas wie:

switch (n) { 
    case 1: 
     // things to do when n is 1 
     break; 
    case 3: 
    case 4: 
     // things to do when n is 3 or 4 
     break; 
    default: 
     // things to do when n is neither 1, 3, nor 4 
} 

A case Aussage nicht ein Wertebereich sein kann. Die Verwendung eines Ausdrucks als case wird ebenfalls nicht empfohlen - es ist nicht ungültig, aber es wird wahrscheinlich nicht das tun, was Sie erwarten.

0

Sie können die Schalteranweisung ändern, damit sie funktioniert. Pass 'True' in Schalter und entfernen Sie Klammern aus der Fallkondition

switch (true) { 
    case num > 36: 
Verwandte Themen