论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
应用中心
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
qidao123.com技术社区-IT企服评测·应用市场
»
论坛
›
大数据
›
数据仓库与分析
›
html利用JS实现账号暗码登录的简单案例
html利用JS实现账号暗码登录的简单案例
万万哇
论坛元老
|
6 天前
|
显示全部楼层
|
阅读模式
楼主
主题
1918
|
帖子
1918
|
积分
5754
目次
案例需求
思路
错误案例及题目
修改思路
案例提供
所须要的组件
<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 的实行机制是事件驱动 + 单线程的,它遵照如下逻辑:
用户点击按钮,触发 login() 函数;
欣赏器立即实行 login() 中的全部代码,包罗 for 循环;
循环内的全部迭代都会在一次点击中完成,不会等待用户再次输入;
因此,纵然你盼望“每次点击只验证一次”,但循环的存在会导致“单次点击验证多次
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>
复制代码
运行结果:
到这里也就完成了该案例了。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
万万哇
论坛元老
这个人很懒什么都没写!
楼主热帖
markdown day 01
Linux系统调用四、lseek()函数详解 ...
基于CSDN云和docker全家桶的微服务项目 ...
ClickHouse(05)ClickHouse数据类型详解 ...
Nacos注册中心-----从0开始搭建和使用 ...
应急救灾物资行业标准与规范 ...
【云原生】Docker 进阶 -- 数据卷使用 ...
谈谈技术能力
阿里云域名购买流程以及免费证书的申请 ...
100天精通Python(进阶篇)——第39天 ...
标签云
渠道
国产数据库
集成商
AI
运维
CIO
存储
服务器
浏览过的版块
SAP
快速回复
返回顶部
返回列表