javascript - 为什么我的选项卡中有时会出现未定义?
问题描述
我做了随机密码生成器,它工作正常,但有时当我滚动新通行证时,控制台中的 var 文本内部没有定义。如何解决?
function generate()
{
var tab = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','0','1','2','3','4','5','6','7','8','9'];
var text = [];
for (var i = 0; i < 10; i++) {
x = Math.random()*tab.length;
z = Math.round(x)
text.push(tab[z]);
}
console.log(text);
document.getElementById('input1').value = text.join('');
}
<!DOCTYPE html>
<html>
<script src="script.js"></script>
<link rel="stylesheet" href="style.css">
<head></head>
</head>
<body>
<div class="randompass">
<input id="input1"></input>
<button onclick="generate()">Create random</button>
</div>
</body>
</html>
解决方案
您想使用Math.floor()
而不是-由于向上舍入,您有时会在使用时Math.round
最终选择tab.length + 1
Math.round
function generate() {
var tab = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];
var text = [];
for (var i = 0; i < 10; i++) {
x = Math.random() * tab.length;
z = Math.floor(x)
text.push(tab[z]);
}
console.log(text);
document.getElementById('input1').value = text.join('');
}
<body>
<div class="randompass">
<input id="input1">
<button onclick="generate()">Create random</button>
</div>
</body>
推荐阅读
- snowflake-cloud-data-platform - 众包 - Azure 的 DW 产品与 Snowflake 的区别
- javascript - 如何使用 if 语句关闭悬停效果
- laravel - Docker 上的 Laravel 的 MySQL 访问被拒绝
- python - Python: sorted insert into list
- html - 是否可以使用 CSS flexbox 在垂直和水平两个轴上收缩/拉伸内容?
- xml - 将 XML 文件复制到雪花表时捕获 XML 文件名
- sql - 'ORA-01843: not a valid month' 但格式正确?
- php - 我提出的每个请求都得到不同的 php 会话 ID。角前端
- r - 为什么 ggplot2 中的 ylim() 函数被忽略?
- sql-server - 如何从 SQL Server 中的 select 语句中设置变量