教你用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 (视频源码免费获取)
(部分素材来源于互联网,如有保护请联系作者)
教你用JavaScript随机生成密码的更多相关文章
- Linux下随机生成密码的命令总结
有时候经常为如何设置一个安全.符合密码复杂度的密码而绞尽脑汁,说实话,这实在是一个体力活而且浪费时间,更重要的是设置密码的时候经常纠结.终于有一天实在忍不住了,于是学习.整理了一下如何使用Linux下 ...
- linux随机生成密码
1.mkpassword工具 # 使用最多的密码生成工具 yum -y install expect #需要安装expect工具 mkpasswd -l -d -c -C -s #直接在命令行进行随机 ...
- JavaScript随机生成信用卡卡号的方法
这段JS代码根据信用卡卡号产生规则随机生成信用卡卡号,是可以通过验证的,仅供学习参考,请不要用于非法用途,否则后果自负. var visaPrefixList = new Array( "4 ...
- 使用javascript随机生成斗地主玩家手牌
学习javascript估摸着有半个多月了,好歹自己有过编程基础,学的还算轻松,不过js里的面向对象是真的打脑壳,但都但不懂,和我以前学过的c#简直相差太远 今天写了个随机生成斗地主玩家手牌的代码,自 ...
- JavaScript随机生成颜色以及十六进制颜色 与RGB颜色值的相互转换
/** * 随机生成颜色 * @return 随机生成的十六进制颜色 */ function randomColor(){ var colorStr=Math.floor(Math.random()* ...
- 使用JavaScript随机生成数字混合字母的验证码
<script> // 封装一个随机生成数字的函数 function random(a, b) { var n = Math.round(Math.random() * (a - b) ...
- 【JavaScript随机生成验证码及其颜色】
css样式: <style type="text/css"> /*给验证码设一个盒子*/ #yzm{ width: 120px; height: 50px; text- ...
- JavaScript随机生成布尔值
//方法一 var rand = Boolean(Math.round(Math.random())); conosole.log(rand) // 方法二: var arr = [true,fals ...
- python 几种方法实现随机生成8位同时包含数字、大写字符、小写字符密码的小程序
python 实现随机生成包8位包含大写字母.小写字母和数字的密码的程序.要求:1用户输入多少次就生成多少条密码,2要求密码必须同时包含大写字母.小写字母和数字,长度8位,不能重复代码如下: impo ...
- 随机生成指定长度的密码之---Random
随机生成指定长度的密码思路: 1.密码中可能包含字母,数字,特殊符号,为了区别分别定义常量 2.随机生成密码,自然想到要用到java.util.Random 类 3.定义一个带两个参数的方法,1跟2, ...
随机推荐
- vivo 云服务海量数据存储架构演进与实践
一.写在开头 vivo 云服务提供给用户备份手机上的联系人.短信.便签.书签等数据的能力,底层存储采用 MySQL 数据库进行数据存储. 随着 vivo 云服务业务发展,云服务用户量增长迅速,存储在云 ...
- 2023陕西省大学生信息安全竞赛web writeup
前言 早写好了,忘发了,题目质量还行,够我坐大牢 ezpop 简单的反序列化,exp如下 <?php class night { public $night; } class day { pub ...
- vue插件实现循环滚动列表——vue-seamless-scroll
https://blog.csdn.net/weixin_45389051/article/details/106379832?utm_medium=distribute.pc_relevant.no ...
- 解决pyintstaller 打包后程序报错 api-ms-win-core-path-l1-1-0.dll文件
一.错误现象 1.api-ms-win-core-path-l1-1-0.dll错误日志如下: 2.重新打包查看有如下的警告信息: 二.解决方案: 1.网上下载:api-ms-win-core-pat ...
- java项目实践-webapp-mytomcat-day16
目录 1. http协议 2. 自定义的web框架 3. 具体实现 4. 启动 1. http协议 CS架构 建立连接"三次握手" 断开连接 "四次挥手" 三次 ...
- VUEX 使用学习六 : modules
转载请注明出处: 当Store中存放了非常多非常大的共享数据对象时,应用会变的非常的复杂,Store对象也会非常臃肿,所以Vuex提供了一个Module模块来分隔Store.通过对Vuex中的Stor ...
- /etc/profile,/etc/bashrc,~/.profile,~/.bashrc 的区别及使用
转载请注明出处: /etc/profile 为系统的全局环境变量设置,此文件为系统的每个用户设置环境信息 /etc/bashrc 为每一个运行bash shell的用户执行此文件.当bash ...
- 问题--去除CSDN水印
1.问题如上 有时候需要使用其中的图片,但是水印很让人烦恼 确实可以用PS中的修复画笔工具,修复工具等进行处理 但是当水印覆盖到字体时,就会破坏到原有字体 2.解决方式 从CSDN添加水印的方式入手 ...
- [STM32H7] 实战技能分享,如何让工程代码各种优化等级通吃,含MDK AC5,AC6,IAR和GCC
引出问题: 一个好的工程项目代码,特别是开源类的,如果能做到各种优化等级通吃,是一种非常好的工程案例,这样别人借鉴的时候,可以方便的适配到自己工程里.但实际项目中,针对一款产品代码,我们一般不会 ...
- 【中介者模式(Mediator)】使用Java实现中介者模式
引言 中介者,何为中介者,顾名思义就是我们的在处理A和B之间的关系的时候,引入一个中间人,来处理这两者之间的关系,例如生活中我们需要去租房,买房,都会有中介,来处理房东和租客之间的协调关系,这个就是中 ...