javascript - 尝试使用 eventListener 生成数字
问题描述
我想生成随机彩票号码,范围为 1-59,显示 7 个号码。它们必须在单击提交按钮时生成。我努力让它写入控制台日志,说没有定义随机。
let lottoNum = [];
while (lottoNum.length < 7) {
let random = Math.floor(Math.random() * 59) + 1;
if (lottoNum.indexOf(random) === -1) lottoNum.push(random);
}
let btn = document.getElementById("Button");
button.addEventListener("click", function getNumbers() {
return random;
});
随机未定义
解决方案
你很接近,但是你应该研究范围。尝试以下操作:
generateNumbers = () => {
let lottoNum = [];
while (lottoNum.length < 7) {
let random = Math.floor(Math.random() * 59) + 1;
if (lottoNum.indexOf(random) === -1) lottoNum.push(random);
}
return lottoNum;
}
let btn = document.getElementById("Button");
btn.addEventListener("click", function getNumbers() {
const nums = generateNumbers();
console.log(nums);
});
我已将您的主要代码放入一个函数并从所述函数返回它。从那里我在您的点击侦听器中调用了该函数并记录了它们。你可以在我做过的地方做任何你想做的事情console.log
。
你有你的“随机未定义”的原因是因为你let random
在你的while
循环中做了。这意味着任何不在{}
while 循环内的东西都不能随机读取。因此函数和返回:)
推荐阅读
- asp.net - 在 .NET Core razor 项目中是否有其他方法可以在不使用迁移的情况下连接到 SQL Server?
- python - Azure 机器学习服务上的模型部署错误
- mysql - Mybatis 执行慢
- networking - 计算机网络中的“延迟”和“延迟”有什么区别?
- sql - 如何将计算的 SQL 列转换为小数点后 2 位?
- firebase - Google Cloud Functions 如何检测活动实例的数量?
- python - 如何在 matplotlib 中绘制 200 行(时间序列)并使其在 x 轴上可读?
- python - 如何处理 ParserErrors 并继续解析?
- javascript - 在循环中选择动态元素 id
- sql - 在 kdb 中,在多个不等式的列上是否存在等价的左连接(如 asof 连接的可修改版本)?