当前位置: 首页 > wzjs >正文

网站换ip注意磁力最好用的搜索引擎

网站换ip注意,磁力最好用的搜索引擎,汉中网站建设价格,千锋教育招聘目录 案例需求 思路 错误案例及问题 修改思路 案例提供 所需要的组件 <input>标签&#xff0c;<button>标签&#xff0c;<script>标签 详情使用参考&#xff1a;HTML 教程 | 菜鸟教程 案例需求 编写一个程序&#xff0c;最多允许用户尝试登录 3 次。…

目录

案例需求

思路

错误案例及问题

修改思路

案例提供


所需要的组件

<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.dtcms.com/wzjs/329337.html

相关文章:

  • 现代网站建设中山seo排名
  • 网站开发报价表模板线上营销策划方案
  • 金融网站建设方案ppt百度网首页官网
  • 做风投要关注哪些网站疫情最新消息
  • 网站编辑器做段落空格网络营销收获与体会
  • 哪个网站的前台背景墙做的好2345网址导航设为主页
  • 网站建设和维护pdf营销策划方案案例范文
  • 广告视频网站关键词优化报价
  • centos做网站服务器网络营销的概念
  • 微页制作网站模板下载苹果cms播放器
  • 疯狂购网站开发商客源软件哪个最好
  • 网站建设与管理案例教程百度推广渠道
  • 太原网站制作公司哪家好重庆的seo服务公司
  • 酒店网站的建设方案优化设计三年级上册语文答案
  • 有哪些企业可以做招聘的网站有哪些内容网页制作费用大概多少
  • 南通网站建设制作产品推广宣传方案
  • 空白网站怎么建立百度sem运营
  • 甘肃省建设厅官方网站张睿seo sem关键词优化
  • 网站开发要求有哪些网站快速收录付费入口
  • 没有网站可以做app吗seo公司怎么样
  • 找人做网站注意哪些广东网站优化公司
  • 国外做衣服网站网站优化推广方法
  • 用web开发一个网站怎么做山东seo首页关键词优化
  • 网站开发建设合同范本企业管理培训机构
  • 做外贸网站需要缴什么税月嫂免费政府培训中心
  • w网站建设需求说明电话营销
  • php网站模块修改网络营销大师排行榜
  • intitle:郑州网站建设第三波疫情将全面大爆发
  • 企业网站备案信息淘宝关键词排名怎么查
  • 阿里云网站服务器北京seo外包