2011年9月13日 星期二

範例網更新 - JavaScript範例 - 密碼產生器

今天閒來無事(誤)。其實是身體不舒服遲到,索性(?)就留在家讀書了。在讀書閒瑕時間完成了這個w。

好吧讓我們來看Code!~

首先是介面(話說我不知道大小寫英文字母要怎麼講 慘)

<input type="checkbox" id="english_b" checked="checked" /> 
<label for="english_b">Big english</label>
<input type="checkbox" id="english_l" checked="checked" />
<label for="english_l">Low english</label>
<input type="checkbox" id="number" checked="checked" />
<label for="number">Number</label>
<input type="checkbox" id="other" />
<label for="other">Other signs</label>
<input type="text" id="length" value="10" />
<input type="button" value="Generate" onclick="generate()" />
<input type="text" id="output" />

只有一個入口點,程式結構非常簡單。先是宣告各種集合和變數

var A="ABCDEFGHIJKLMNOPQRSTUVWXYZ"; 
var a="abcdefghijklmnopqrstuvwxyz";
var num="1234567890";
var other="~`!@#$%^&*()-_+=[{]}\\|;:'\",<.>/?";
var sum="";
var length=document.getElementById("length").value;
var output="";

判斷使用者的勾選狀態並合併集合

if(document.getElementById("english_b").checked) 
    sum+=A;
if(document.getElementById("english_l").checked)
    sum+=a;
if(document.getElementById("number").checked)
    sum+=num;
if(document.getElementById("other").checked)
    sum+=other;

split,產生N個隨機數,挑選N個隨機元素,合併,output

sum=sum.split(''); 
while(length--){
    var r=Math.floor(Math.random()*sum.length);
    output+=sum[r];
}
document.getElementById("output").value=output;

很簡單吧ww
最後附上完整代碼︰

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>JavaScript範例 - 密碼產生器</title>
<link type="text/css" rel="stylesheet" href="style.css" />
<script type="text/javascript">
function generate(){
    var A="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    var a="abcdefghijklmnopqrstuvwxyz";
    var num="1234567890";
    var other="~`!@#$%^&*()-_+=[{]}\\|;:'\",<.>/?";
    var sum="";
    var length=document.getElementById("length").value;
    var output="";
    
    if(document.getElementById("english_b").checked)
        sum+=A;
    if(document.getElementById("english_l").checked)
        sum+=a;
    if(document.getElementById("number").checked)
        sum+=num;
    if(document.getElementById("other").checked)
        sum+=other;
        
    sum=sum.split('');
    while(length--){
        var r=Math.floor(Math.random()*sum.length);
        output+=sum[r];
    }
    document.getElementById("output").value=output;
}
</script>
<style type="text/css">
#output{
    font-family: Courier New
}
</style>
</head>
<body>
<div id="container">
    <a href="home.html">上一頁</a><br />
    <h5>Options:</h5>
    <input type="checkbox" id="english_b" checked="checked" /><label for="english_b">Big english</label>
    <input type="checkbox" id="english_l" checked="checked" /><label for="english_l">Low english</label>
    <input type="checkbox" id="number" checked="checked" /><label for="number">Number</label>
    <input type="checkbox" id="other" /><label for="other">Other signs</label>
    <h5>Length:</h5>
    <input type="text" id="length" value="10" /><br />
    <input type="button" value="Generate" onclick="generate()" />
    <h5>Output:</h5>
    <input type="text" id="output" />
</div>
</body>
</html>

你也可以在我的範例網找到︰點我

沒有留言:

張貼留言