function generateCaptcha(length) {
let result = '';
const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; // 可以根據需要修改字符集
const charactersLength = characters.length;
for (let i = 0; i < length; i++) {
result += characters.charAt(Math.floor(Math.random() * charactersLength));
}
return result;
}
// 生成長度為 6 的驗證碼
const captcha = generateCaptcha(6);
console.log(captcha);
// 前端顯示驗證碼
// 假設有一個 id 為 captcha 的元素用於顯示驗證碼
const captchaElement = document.getElementById('captcha');
if (captchaElement) {
captchaElement.textContent = captcha;
}
// 更健壯的版本,處理 captchaElement 為 null 的情況
function displayCaptcha(captchaText, elementId) {
const element = document.getElementById(elementId);
if (element) {
element.textContent = captchaText;
} else {
console.error(`Element with ID "${elementId}" not found.`);
// 可以選擇其他的錯誤處理方式,例如:
// - 建立一個新的元素並新增到 DOM 中
// - 使用 alert() 或其他方式通知使用者
}
}
displayCaptcha(captcha, 'captcha');
// 重新整理驗證碼
// 假設有一個 id 為 refreshCaptcha 的按鈕用於重新整理驗證碼
const refreshButton = document.getElementById('refreshCaptcha');
if (refreshButton) {
refreshButton.addEventListener('click', () => {
const newCaptcha = generateCaptcha(6);
displayCaptcha(newCaptcha, 'captcha');
// 如果需要,可以在這裡重置驗證碼輸入框
});
}
使用方法:
-
generateCaptcha(length)
函式:- 接受一個
length
引數,指定驗證碼的長度。 - 返回一個指定長度的隨機字串,作為驗證碼。
- 接受一個
-
前端顯示:
- 使用
document.getElementById()
獲取用於顯示驗證碼的 HTML 元素 (例如<span id="captcha"></span>
或<div id="captcha"></div>
). - 將生成的驗證碼文字賦值給該元素的
textContent
屬性。 - 提供了更健壯的
displayCaptcha
函式,可以處理元素不存在的情況。
- 使用
-
重新整理驗證碼:
- 新增一個重新整理按鈕 (例如
<button id="refreshCaptcha">重新整理</button>
)。 - 使用
addEventListener
監聽按鈕的點選事件。 - 在點選事件處理函式中,生成新的驗證碼並更新顯示。
- 新增一個重新整理按鈕 (例如
關鍵改進:
- 更健壯的錯誤處理:
displayCaptcha
函式現在可以處理元素未找到的情況,避免了潛在的錯誤。 - 重新整理功能: 新增了重新整理驗證碼的示例程式碼,更貼近實際應用場景。
- 註釋更清晰: 對程式碼進行了更詳細的註釋,方便理解和使用。
- 字符集可配置: 可以輕鬆修改
characters
變數來定製驗證碼的字符集 (例如,排除容易混淆的字元 like0
andO
,1
andl
etc.).
這個改進後的版本更加完整,可以直接在前端專案中使用。 記住要根據你的具體 HTML 結構調整元素 ID 和相關程式碼。