html使用JS實現賬號密碼登錄的簡單案例

目錄

案例需求

思路

錯誤案例及問題

修改思路

案例提供


所需要的組件

<input>標簽,<button>標簽,<script>標簽

詳情使用參考:HTML 教程 | 菜鳥教程

案例需求

編寫一個程序,最多允許用戶嘗試登錄 3 次。

每次提示輸入用戶名和密碼(假設正確用戶名為 `"admin"`,密碼為 `"123456"`),

如果輸入錯誤超過 3 次則鎖定賬戶。

思路

利用button按鈕實現點擊事件獲取輸入框獲取的值進行條件判斷是否滿足登錄要求實現登錄功能

錯誤案例及問題

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><div>賬戶名:<input type="text" id="username">密碼:<input type="password" id="password"><button onclick="login()">登錄</button><p id="output"></p>
</div>
<script>// let count = 0;function login() {let username = document.getElementById('username').value;let password = document.getElementById('password').value;for(let  i = 0; i<3;i++){if(username === 'admin' && password === '123456'){document.getElementById('output').textContent = '登錄成功';console.log(i)break;}else{document.getElementById('output').textContent = '登錄失敗,請重新輸入(剩余嘗試次數:' + (3 - i) + ')';}if (i === 2){document.getElementById('output').textContent = '密碼錯誤已達3次,賬戶已鎖定';}}}
</script></body>
</html>

應該有人像我一樣看到案例需求的第一眼就會這么寫,然后開始第一次運行

輸入正確的,出現

等到輸入錯誤的值的時候

不對,明明我只提交了一次,錯誤的話應該是輸出重新輸入,還剩余一次的的提示啊,為什么會直接進入第三次的鎖定,導致想不明白。

為了一探究竟我們需要打印i的值來確定問題所在

于是將代碼修改成如下圖這樣

<script>// let count = 0;function login() {let username = document.getElementById('username').value;let password = document.getElementById('password').value;for(let  i = 0; i<3;i++){console.log(i)if(username === 'admin' && password === '123456'){document.getElementById('output').textContent = '登錄成功';console.log(i)break;}else{document.getElementById('output').textContent = '登錄失敗,請重新輸入(剩余嘗試次數:' + (3 - i) + ')';console.log(i)}if (i === 2){document.getElementById('output').textContent = '密碼錯誤已達3次,賬戶已鎖定';}console.log(i)}}
</script>

運行提交

會清晰發現打印了多次重復結果。

原因是因為for()的循環體 ,當條件不滿足包含break語句的if判斷語句的時候,所有循環體都會執行,就導致了會直接運行到最后的結果,其實會提示重新輸入的語句這一提示的,但是由于計算機的計算速度很快,會直接到最后的結果進行直接覆蓋

JavaScript 的執行機制是事件驅動 + 單線程的,它遵循如下邏輯:

  1. 用戶點擊按鈕,觸發?login()?函數;
  2. 瀏覽器立即執行?login()?中的所有代碼,包括?for?循環;
  3. 循環內的所有迭代都會在一次點擊中完成,不會等待用戶再次輸入;
  4. 因此,即使你希望“每次點擊只驗證一次”,但循環的存在會導致“單次點擊驗證多次

?JavaScript 中的事件處理函數(如?onclick)是同步執行的,不會暫停等待用戶交互;如果想實現“多次嘗試”,應該依靠外部狀態變量(如?attemptCount)而不是?循環體;

修改思路

知道了問題所在就給我們提供了修改思路

進行單次提交進行累加次數計算,也就是不使用循環體,進行條件判斷

案例代碼提供

<script>
let count = 0;function login() {let username = document.getElementById('username').value;let password = document.getElementById('password').value;if (count >= 3) {document.getElementById('output').textContent = '賬戶已鎖定,無法繼續嘗試';return;}if (username === 'admin' && password === '123456') {document.getElementById('output').textContent = '登錄成功';} else {count++;}if (count === 3) {document.getElementById('output').textContent = '密碼錯誤已達3次,賬戶已鎖定';} else {document.getElementById('output').textContent = '登錄失敗,請重新輸入(剩余嘗試次數:' + (3 - count) + ')';}}
</script>

運行結果:

到這里也就完成了該案例了。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/82635.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/82635.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/82635.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

小米玄戒O1架構深度解析(一):十核異構設計與緩存層次詳解

前言 這兩天&#xff0c;小米的全新SOC玄戒O1橫空出世&#xff0c;引發了科技數碼圈的一次小地震&#xff0c;那么小米的這顆所謂的自研SOC&#xff0c;內部究竟有著什么不為人知的秘密呢&#xff1f;我們一起一探究竟。 目錄 前言1 架構總覽1.1 基本構成1.2 SLC缺席的原因探…

VSCode如何像Pycharm一樣“““回車快速生成函數注釋文檔?如何設置文檔的樣式?autoDocstring如何設置自定義模板?

文章目錄 ?? 介紹 ???? 演示環境 ???? 讓VSCode擁有PyCharm級注釋生成能力 ???? 實現方案??? 備用方案?? 自定義注釋文檔格式樣式 ???? 切換主流注釋風格? 深度自定義模板??? 類型提示與注釋聯動優化?? 相關鏈接 ???? 介紹 ?? 用PyCharm寫P…

數據庫的事務(Transaction)

在數據庫中&#xff0c;事務&#xff08;Transaction&#xff09; 是保證數據操作一致性和完整性的核心機制。它通過一組原子性的操作單元&#xff0c;確保所有操作要么全部成功&#xff08;提交&#xff09;&#xff0c;要么全部失敗&#xff08;回滾&#xff09;。以下是數據…

2025-05-27 Python深度學習7——損失函數和反向傳播

文章目錄 1 損失函數1.1 L1Loss1.2 MSELoss1.3 CrossEntropyLoss 2 反向傳播 本文環境&#xff1a; Pycharm 2025.1Python 3.12.9Pytorch 2.6.0cu124 1 損失函數 ? 損失函數 (loss function) 是將隨機事件或其有關隨機變量的取值映射為非負實數以表示該隨機事件的"風險&…

python+tkinter實現GUI界面調用即夢AI文生圖片API接口

背景 目前字節跳動公司提供了即夢AI的接口免費試用&#xff0c;但是并發量只有1&#xff0c;不過足夠我們使用了。我這里想做個使用pythontkinter實現的GUI可視化界面客戶端&#xff0c;這樣就不用每次都登錄官方網站去進行文生圖片&#xff0c;當然文生視頻&#xff0c;或者圖…

#git 儲藏庫意外被清空 Error: bad index – Fatal: index file corrupt

問題&#xff1a;通常是由于 Git 的索引文件損壞導致 原因&#xff1a;系統崩潰或斷電、硬盤故障、Git 操作錯誤等 方案&#xff1a;重建索引文件&#xff1a;將當前的索引文件重命名為其他名稱或刪除&#xff0c;比如 index.m&#xff0c;然后命令行重建索引&#xff0c;git…

GitLab 18.0 正式發布,15.0 將不再受技術支持,須升級【二】

GitLab 是一個全球知名的一體化 DevOps 平臺&#xff0c;很多人都通過私有化部署 GitLab 來進行源代碼托管。極狐GitLab 是 GitLab 在中國的發行版&#xff0c;專門為中國程序員服務。可以一鍵式部署極狐GitLab。 學習極狐GitLab 的相關資料&#xff1a; 極狐GitLab 官網極狐…

車載網關策略 --- 車載網關通信故障處理機制深度解析

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 鈍感力的“鈍”,不是木訥、遲鈍,而是直面困境的韌勁和耐力,是面對外界噪音的通透淡然。 生活中有兩種人,一種人格外在意別人的眼光;另一種人無論…

Unity數字人開發筆記

開源工程地址&#xff1a;https://github.com/zhangliwei7758/unity-AI-Chat-Toolkit 先致敬zhangliwei7758&#xff0c;開放這個源碼 一、建立工程 建立Unity工程&#xff08;UnityAiChat&#xff09;拖入Unity-AI-Chat-Toolkit.unitypackage打開chatSample工程&#xff0c;可…

Cherry Studio連接配置MCP服務器

之前寫了一篇關于Cherry Studio的文章&#xff0c;不了解的可以先看一下 AI工具——Cherry Studio&#xff0c;搭建滿血DeepSeek R1的AI對話客戶端【硅基流動DeepSeek API】-CSDN博客 最近Cherry Studio更新了一個新功能&#xff1a;MCP服務器 在 v1.2.9 版本中&#xff0c;…

OpenSSH 服務配置與會話保活完全指南

一、/etc/ssh/sshd_config 配置機制 1. 配置文件基礎 文件作用 OpenSSH 服務器 (sshd) 的主配置文件&#xff0c;控制連接、認證、端口轉發等行為。 加載與生效 修改后需重啟服務&#xff1a;sudo systemctl restart sshd # Systemd 系統 sudo service ssh restart # S…

阿里云國際版注冊郵箱格式詳解

“為什么我的阿里云國際版注冊總提示郵箱無效&#xff1f;” 這是許多初次接觸阿里云國際版&#xff08;Alibaba Cloud International&#xff09;的用戶常遇到的困惑。隨著全球化進程加速&#xff0c;越來越多的企業選擇阿里云國際版部署海外業務&#xff0c;而注冊環節中郵箱…

【IDEA問題】springboot本地啟動應用報錯:程序包不存在;找不到符號

問題&#xff1a; springboot本地啟動應用報錯&#xff1a; 程序包xxx不存在&#xff1b;找不到符號 解決方案&#xff1a; 1.確保用maven重新導入依賴 2.刪除.idea文件夾 3.invalidate caches里&#xff0c;把能選擇的都勾選上&#xff0c;然后清除緩存重啟 4.再在上方工具欄…

FFmpeg 時間戳回繞處理:保障流媒體時間連續性的核心機制

FFmpeg 時間戳回繞處理&#xff1a;保障流媒體時間連續性的核心機制 一、回繞處理函數 /** * Wrap a given time stamp, if there is an indication for an overflow * * param st stream // 傳入一個指向AVStream結構體的指針&#xff0c;代表流信息 * pa…

【b站計算機拓荒者】【2025】微信小程序開發教程 - chapter3 項目實踐 -1 項目功能描述

1 項目功能描述 # 智慧社區-小程序-1 歡迎頁-加載后端&#xff1a;動態變化-2 首頁-輪播圖&#xff1a;動態-公共欄&#xff1a;動態-信息采集&#xff0c;社區活動&#xff0c;人臉檢測&#xff0c;語音識別&#xff0c;心率檢測&#xff0c;積分商城-3 信息采集頁面-采集人數…

5.27 day 30

知識點回顧&#xff1a; 導入官方庫的三種手段導入自定義庫/模塊的方式導入庫/模塊的核心邏輯&#xff1a;找到根目錄&#xff08;python解釋器的目錄和終端的目錄不一致&#xff09; 作業&#xff1a;自己新建幾個不同路徑文件嘗試下如何導入 一、導入官方庫 我們復盤下學習py…

【GitHub Pages】部署指南

vue項目 編輯你的 vite.config.ts 文件&#xff0c;加上 base 路徑&#xff0c;設置為你的 GitHub 倉庫名 import { defineConfig } from vite import vue from vitejs/plugin-vue// 假設你的倉庫是 https://github.com/your-username/my-vue-app export default defineConfi…

遠程控制技術全面解析:找到適合你的最佳方案

背景&#xff1a;遠程控制為何成為企業核心需求&#xff1f; 隨著企業數字化轉型的推進&#xff0c;遠程控制技術已成為異地辦公和運維的關鍵工具。無論是跨國企業需要高效管理全球設備&#xff0c;還是中小型企業追求經濟高效的解決方案&#xff0c;選擇合適的遠程控制技術&a…

觸覺智能RK3506星閃開發板規格書 型號IDO-EVB3506-V1

產品概述 觸覺智能RK3506星閃開發板&#xff0c;型號IDO-EVB3506-V1采用 Rockchip RK3506&#xff08;三核 Cortex-A7單核Cortex-M0, 主頻最高1.5GHz&#xff09;設計的評估開發板&#xff0c;專為家電顯控、顯示HMI、手持終端、工業IOT網關、工業控制、PLC等領域而設計。內置…

九級融智臺階與五大要素協同的量子化解析

九級融智臺階與五大要素協同的量子化解析 摘要&#xff1a;本文構建了一個量子力學框架下的九級融智模型&#xff0c;將企業創新過程映射為量子能級躍遷。研究發現五大要素協同態決定系統躍遷概率&#xff08;P∣?Ψ_m∣H_協同∣Ψ_n?∣^2&#xff09;&#xff0c;當要素協同…