【发布时间】:2019-01-17 04:23:47
【问题描述】:
所以我目前正在开发一个小型项目网站,该网站基本上在按下按钮时会改变背景颜色。但我也在尝试实现一个“后退”按钮,以在我创建的颜色数组中向后移动,并且将保存正在生成的所有颜色代码。但是正如您在测试项目时可能看到的那样,后退按钮并不能正常工作,我知道这是因为调用“prevColor”函数时没有保存“i”变量。
function prevColor() {
(i == randomColors.length ? bodyStyle.backgroundColor = randomColors[i-2] : bodyStyle.backgroundColor = randomColors[i-1])
};
这部分对我来说不起作用,但请随时通过下面提供的链接或通过 sn-p(单击打开)检查 jsfiddle.net 上的整个代码。
https://jsfiddle.net/jamal000/kobmajyx/
var button = document.querySelector("#change");
var buttonStyle = button.style;
var bodyStyle = document.querySelector("body").style;
var p = document.querySelector("p");
var i = 0;
var randomColors = [];
var hue;
var HSLcolor;
var back = document.querySelector("#back");
button.addEventListener("click", randomHSL);
back.addEventListener("click", prevColor);
function randomHSL(){
hue = Math.floor((Math.random() * 360) + 1);
HSLcolor = `HSL(${hue}, 80%, 70%)`;
bodyStyle.backgroundColor = HSLcolor;
randomColors.push(`${HSLcolor}`);
p.textContent = "Color: " + randomColors[i];
i++;
p.style.color, buttonStyle.borderColor = `HSL(${hue + 180}, 80%, 70%)`;
p.style.color = buttonStyle.borderColor;
};
function prevColor(){
(i == randomColors.length ? bodyStyle.backgroundColor = randomColors[i-2] : bodyStyle.backgroundColor = randomColors[i-1])
};
body {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
overflow: hidden;
margin: 0;
padding: 0;
width: 100vw;
height: 100vh;
transition: all 0.5s ease;
}
#change {
height: 40.6px;
width: 200px;
outline: none;
font-family: Raleway;
font-size: 15px;
font-weight: 600;
text-decoration: none;
border: 2px solid darkgrey;
border-radius: 10px;
background-color: #f1f1f1;
color: black;
box-shadow: 5px 7px 40px rgba(0,0,0,0.5);
}
#change:hover {
color: #666666;
box-shadow: 7px 10px 40px rgba(0,0,0,0.4);
transition: all 0.5s ease;
}
:active {
border-color: #666666;
transition: all 0.5s ease;
}
p {
font-family: Raleway;
font-weight: 500;
}
#back {
outline: none;
margin-right: 5px;
background-color: inherit;
border: 2px solid #2f2f2f;
border-radius: 5px;
}
#back:hover {
border-color: #aaa;
transition: all 0.5s ease;
}
#back:active {
transition: all 0.2s ease;
color: #aaa;
background-color: inherit;
}
div {
margin-right: 38.172px;
}
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>Color Toggle</title>
<link rel="stylesheet" href="style.css" type="text/css">
<link href="https://fonts.googleapis.com/css?family=Raleway:500" rel="stylesheet">
</head>
<body>
<p>Color: White</p>
<div>
<button id="back"> ◄ </button>
<button id="change">Click for a surprise!!!</button>
</div>
<script src="toggle.js"></script>
</body>
</html>
【问题讨论】:
-
好吧,既然你回来了,你需要在点击时更新 i
标签: javascript arrays button colors