我正在制作一个包含单个圆圈和一个按钮的页面。按下按钮后,我希望圆圈变为随机颜色。
为什么我的代码无法正常运行?
cos
$("#button").click(function() {
$("#thing").css("background-color", function() {
var color = "#";
var hex = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, "A", "B", "C", "D", "E", "F"];
while (var i = 0; i < 6; i++) {
color += hex[Math.floor(Math.random() * 16)];
}
alert(color);
return color;
});
});
答案 0 :(得分:2)
你需要在这里使用for循环。不是一个循环。
for( var i = 0; i < 6; i++) {
color += hex[Math.floor(Math.random() * 16)];
}
答案 1 :(得分:1)
你甚至没有制作一个圆圈,你为while
循环引入了一种新语法恭喜
¯_(ツ)_ /¯
您可以使用以下代码来查看您在那里做错了什么,并且您没有从设置color
而不是从那里返回的点击事件返回任何内容
$("#button").click(function() {
$("#thing").css("background-color", function() {
var color = "#";
var hex = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, "A", "B", "C", "D", "E", "F"];
var i = 0;
while (i < 6) {
color += hex[Math.floor(Math.random() * 16)];
i++
}
$(this).css('background-color', color);
//return color;
});
});
#thing {
color: #000;
width: 100px;
height: 100px;
border: 1px solid red;
border-radius: 50px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="thing">
</div>
<button id="button">Click to change colour</button>
答案 2 :(得分:0)
您的代码存在一些错误。希望这有帮助
$("#button").click(function() {
$("#thing").css("background-color", function() {
var color = "#";
var hex = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, "A", "B", "C", "D", "E", "F"];
for (i = 0; i < 6; i++) {
color += hex[Math.floor(Math.random() * 16)];
}
alert(color);
return color;
})
})
#thing {
width: 20px;
height: 20px;
background: #ededed;
border-radius: 50%;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="thing"></div>
<button id="button">Click to change colour</button>
答案 3 :(得分:0)
while
无法按预期工作。您拥有的语法将用作for
,但不能用作while
。
for (let i = 0; i < 6; i++) {
color += hex[Math.floor(Math.random() * 16)];
}
如果您想使用while
,可以执行以下操作:
let i = 0;
while(i < 6) {
color += hex[Math.floor(Math.random() * 16)];
i++;
}
但是,不需要循环来创建0到0x1000000之间的数字。
/** Creates a color between
* #000000 and #ffffff inclusive
*/
function createRandomColor() {
const strHex =
Math.floor(Math.random() * 0x1000000)
.toString(16)
.padStart(6, '0');
return `#${strHex}`;
}
const $thing = $('#thing');
$('#button').click(() => {
$thing.css('background-color', createRandomColor());
});
#thing {
width: 20px;
height: 20px;
background: #ededed;
border-radius: 50%;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="thing"></div>
<button id="button">Click to change colour</button>
我经常写ES6,但String.prototype.padStart
是ES2017。如果您按照文档进行操作,则可以获取polyfill。