javascript - 生成新颜色而不刷新页面
问题描述
每次我想用按钮生成新颜色时,我都必须刷新页面,而不是按下按钮生成新颜色。
let hexBtn = document.querySelector('button');
let numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0];
let letters = ["A", "B", "C", "D", "E", "F"];
let hex = numbers.concat(letters);
let array = [];
遍历数组并随机化元素顺序,然后推送到新的空数组。
for (i = 0; i < 6; i++) {
let random = hex.sort(() => Math.random() - 0.5);
array.push(random[i]);
}
function hexColor() {
let joinArray = array.join("");
let hash = '#'
let color = hash.concat(joinArray);
console.log(color);
document.body.style.backgroundColor = color;
}
hexBtn.addEventListener('click', hexColor);
解决方案
您只需要简化代码,因为在加载页面上只生成了一种颜色。您可以在hexColor()
函数中生成颜色:
颜色是 0 到 255 (RGB) 之间的 3 个值,可以生成 0 到 255*255*255 之间的随机数。
现在,您可以使用Number.toString([base])将十进制随机数转换为十六进制并添加'#'
之前。
let hexBtn = document.querySelector('button');
function hexColor() {
let color_rgb = Math.floor(Math.random() * Math.floor(255*255*255));
let color_hex = '#'.concat(color_rgb.toString(16));
console.log(color_hex);
document.body.style.backgroundColor = color_hex;
}
hexBtn.addEventListener('click', hexColor);
<html>
<head><title>Button color</title></head>
<body>
<button>Generate hex</button>
</body>
</html>
推荐阅读
- node.js - ioredis 未处理的错误事件:错误:连接 ETIMEDOUT
- unit-testing - ABAP 相等性检查对于 INT4 和 CHAR 数字是错误的
- r - 在 CMD 中安装 R 脚本包时出错
- docker - 处理 tar 文件时出错(退出状态 1):在数据目录存在时使用 docker-compose 构建时出现意外 EOF
- travis-ci - 如何将一个 .travis.yml 文件用于多个存储库
- c - stm32f4发现CAN传输
- javascript - 在没有用户系统的情况下使用 MEAN 堆栈进行身份验证
- android - 具有固定比率的 Android 高度 wrap_content
- optimization - Mallet 优化错误:在终止 #1 时退出 L-BFGS
- javascript - 执行javascript时如何防止引导模式关闭