首页 > 编程语言 >教你用JavaScript随机生成密码

教你用JavaScript随机生成密码

时间:2022-12-01 15:44:28浏览次数:60  
标签:const 教你用 JavaScript 生成 密码 复制 随机


案例介绍

欢迎来到我的小院,我是霍大侠,恭喜你今天又要进步一点点了!
我们来用JavaScript编程实战案例,做一个随机密码生成器。用户点击生成,输入框内就会生成一个由数字、大小写字母、特殊符号随机组合而成的密码。通过实战我们将学会Math.floor方法、substring方法、clipboard.writeText方法。

案例演示

点击生成后,输入框内会随机生成一串密码,点击复制,会弹出复制成功的消息框。

案例设计

JavaScript实战案例-随机生成密码
我们来看此案例的思维导图设计,包括需求描述,页面设计和技术架构。
其中架构设计包含了HTML,CSS,JavaScript 共三部分代码。

源码学习

进入核心代码学习,我们先来看HTML中的核心代码。

<div class="password-container">
  <h2>随机生成密码</h2>
  <div class="input-container">
    <input type="text" id="input" class="input" placeholder="生成密码" readonly/>
    <i class="far fa-copy fa-2x"></i>
  </div>
  <button class="btn">生成</button>
</div>
<div class="alert-container active">复制密码</div>

然后我们来编写核心的JavaScript代码,通过querySelector获取HTML元素的信息;添加生成按钮的点击事件,点击生成按钮时创建密码;添加复制按钮的点击事件,点击复制按钮时复制密码,若输入框内不空则弹出复制成功的提示框;生成密码,密码内容从字符串中提取,密码长度12,循环生成密码,使用Math的floor和random方法获得随机数字,使用subString截取字符组成密码,将已生成的密码值设置为输入框和弹出框的内容;复制代码使用select和setSelectionRange让用户可以使用鼠标复制,或使用Clipboard接口的 writeText() 方法将密码写入操作系统的剪切板中。

<script>
  //有个小院-兴趣编程
  const btnEl=document.querySelector(".btn");
const inputEl=document.getElementById("input");
const copyIconEl=document.querySelector(".fa-copy");
const alertContainerEl=document.querySelector(".alert-container");
btnEl.addEventListener("click",()=>{
  createPassword();
});
copyIconEl.addEventListener("click",()=>{
  copyPassword();
  if(inputEl.value){
    alertContainerEl.classList.remove("active");
    setTimeout(()=>{
      alertContainerEl.classList.add("active");
        },2000);
        }
        });
        function createPassword() {
        const chars="0123456789abcdefghijklmnopqrstuvwxtz!@#$%^&*()_+?:{}[]ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        const passwordLength=12;
        let password="";
        for(let index=0;index<passwordLength;index++){
        const randomNum=Math.floor(Math.random()*chars.length);
        password+=chars.substring(randomNum,randomNum+1);
        }
        inputEl.value=password;
        alertContainerEl.innerText=password+"已复制";
        }
        function copyPassword() {
        inputEl.select();
        inputEl.setSelectionRange(0,9999);
        navigator.clipboard.writeText(inputEl.value);
        }    </script>

总结思考

学习点
1、math.floor(x)返回小于参数x的最大整数。
2、substring(start,stop):start是检索的开始位置,stop是检索的终止位置,返回结果中不包括stop所指字符。
3、Clipboard接口的 writeText() 方法可以写入特定字符串到操作系统的剪切板。

问答
1、math.floor(x)返回的整数吗?
2、substring返回结果中包不包括stop所指的字符?
3、writeText() 方法可以将特定字符写入操作系统的剪切板吗?

关注我,跟着我每天学习一点点,让你不再枯燥,不再孤单..

全网可搜:小院里的霍大侠, 免费获取简单易懂的实战编程案例。编程/就业/副业/创业/资源。
私微信:huodaxia_xfeater
二维码: http://www.yougexiaoyuan.com/images/weixin_huodaxia.jpg
公众号:有个小院(微信公众号:yougexiaoyuan)
github:yougexiaoyuan (视频源码免费获取)
(部分素材来源于互联网,如有保护请联系作者)

标签:const,教你用,JavaScript,生成,密码,复制,随机
From: https://www.cnblogs.com/xFeater/p/16941607.html

相关文章

  • webstorm PluginManagerCore$Essential Plugin Missing Exception Missing essential
    环境说明操作系统:macOSVentura13.0.1软件版本:WebStorm2022.3背景今天CLion自动更新到2022.3版本后,发现Webstorm会自动同步CLion安装的插件,然后我一顿折腾后......
  • webstorm PluginManagerCore$Essential Plugin Missing Exception Missing essential
    环境说明操作系统:macOSVentura13.0.1软件版本:WebStorm2022.3背景今天CLion自动更新到2022.3版本后,发现Webstorm会自动同步CLion安装的插件,然后我一顿折腾后......
  • webstorm PluginManagerCore$Essential Plugin Missing Exception Missing essential
    环境说明操作系统:macOSVentura13.0.1软件版本:WebStorm2022.3背景今天CLion自动更新到2022.3版本后,发现Webstorm会自动同步CLion安装的插件,然后我一顿折腾后......
  • JavaScript笔记之面向对象
    面向对象了解构造函数原型对象的语法特征,掌握JavaScript中面向对象编程的实现方式,基于面向对象编程思想实现DOM操作的封装。了解面向对象编程的一般特征掌握基于......
  • JavaScript中的Error错误对象与自定义错误类型
    ErrorError是JavaScript语言中的一个标准的内置对象,专门用于处理JS开发中的运行时错误。当我们的JS代码在运行过程中发生错误的话,就会抛出Error对象,整个程序将会中断在错......
  • C++生成均匀分布的随机实数
    #include<random>#include<iostream>intmain(){//定义均匀分布对象,均匀分布区间(a,b)为(2,6)std::uniform_real_distribution<double>uid{2,6};////......
  • javascript函数的理解
    参考:https://www.liaoxuefeng.com/wiki/1022910821149312/1023021087191360在js里,函数是一等公民。函数可以分配给变量函数可以作为参数传递给其他函数函数可以从其他......
  • [JavaScript] 自顶向下学习如何手写promise
    引子去年写了一篇有关promise的手写文章,写到一半发现自己的理解还不是很透彻,写的很烂,今年卷土重来,实现部分采用功能分解,目录跳转的形式呈现,力求最通俗易懂得剖析promise,我......
  • Promise手动实现和Async Await拓展(JavaScript)
    Promise手动实现咱们来看一段Promise的代码:letp1=newPromise((resolve,reject)=>{resolve('成功')reject('失败')![]()})console.log('p1',p1)le......
  • 教你用JavaScript完成轮播图
    案例介绍欢迎来到我的小院,我是霍大侠,恭喜你今天又要进步一点点了!我们来用JavaScript编程实战案例,做一个轮播图。图片每3秒自动轮换,也可以点击左右按键轮播图片,当图片......