2017-07-30 16 views
0

私はパスワードジェネレータを作成しようとしていますが、私はこのコードを持っており、文字ではなく「未定義」を返しています。コードは数字、下位および上位の文字で16文字を返します。私は自分のパスワードをもう作っても心配する必要がないようにこれを持っていたい。あなたが他の条件の例を以下のように同じように動作しますその場合には、これだけ使用し、他の場合のようなケースステートメントを使用することはできませんJavaScriptでスイッチを使用する方法

<!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>

答えて

1

あなたのアルゴリズムであり、私は何を知らない

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>

ので、私はちょうど switchブロック内の他の

+0

これのほとんどは機能していますが、私はキャップ文字について少し心配しています。私はそれが577(ユニコード)でした –

+0

Derp altコードは65ではない577です。 –

+0

この行で条件がある場合、この行を最初に置き換えます。** if(num> 36)String.fromCharCode(65 + num-35); ** –

1

、あなたがcaseで条件文を書かれている場合に、あなたのアルゴリズムを変換しています。

switchブロックで条件文を使用することはできません。したがって、あなたのケースではcaseのどれも実行されていません。 defaultブロックがないので、関数は何も返しません。javascriptの場合はundefinedです。したがって、あなたは得ているundefined

2

switchのための良いユースケースです。 ifおよびelseステートメントを使用してください。

switchステートメントのcaseは、switchが表示されている特定の可能な値です。値の範囲にすることはできません

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 
} 

caseの文:たとえば、1のような何かを書くかもしれません。式をcaseとして使用することはお勧めできません。は無効です。ではありませんが、どちらかといえども期待通りの結果は得られません。

0

switch文を変更して動作させることができます。スイッチに「true」を入力し、ケースの状態からカッコを削除してください

関連する問題