JavaScriptforeach循环遍历一个十六进制值数组,使用setTimeout循环遍历背景颜色
JavaScript foreach loop through an array of hex values, using setTimeout to loop through background colors
我一直在努力想出一种最简洁的方法,可以使用JavaScript更改背景颜色。(试图掌握forEach和更高阶函数的窍门只是为了好玩。)无论如何,这将在页面加载时运行,我认为我已经很接近了:
function background(){
var colorArray = ["#14183b", "#002e2e", "#0d2d40", "#173052", "#194759", "#296b73"];
function change(newcolor){
document.body.style.backgroundColor=newcolor;
}
colorArray.forEach(function(color){
setTimeout(change(color), 1000);
});
}
问题是背景颜色只显示数组中的最后一个元素。我也不知道如何在完成forEach循环后重新开始。谢谢你的帮助!
像这样。。。也可以。。。
var colorArray=["#14183b"、"#002e2e"、"#0d2d40"、"#173052"、"#194759"、"#296b73"];
var计数=0;
function change() {
document.body.style.backgroundColor = colorArray[count];
count++;
if(count == colorArray.length) {
count = 0;
}
}
setInterval(function(){
change();
}, 1000);
问题是您将change
返回的值作为超时处理程序进行传递,而需要传递一个函数引用。
如果你想有一个无限循环,那么你可以像一样使用setInterval()
function background() {
var colorArray = ["#14183b", "#002e2e", "#0d2d40", "#173052", "#194759", "#296b73"];
function change() {
index = index >= colorArray.length ? 0 : index;
document.body.style.backgroundColor = colorArray[index++];
}
var index = 0;
var interval = setInterval(change, 1000);
}
background();
如果你想使用setTimeout()
本身,并且只想迭代一次,那么你可以使用
function background() {
var colorArray = ["#14183b", "#002e2e", "#0d2d40", "#173052", "#194759", "#296b73"];
function change(newcolor) {
document.body.style.backgroundColor = newcolor;
}
colorArray.forEach(function(color, i) {
setTimeout(change.bind(undefined, color), i * 1000);
});
}
background();
改进。。。。
var colorArray = ["#14183b", "#002e2e", "#0d2d40", "#173052", "#194759", "#296b73"];
var count = 0;
setInterval(function(){
document.body.style.backgroundColor = colorArray[count];
count++;
if(count == colorArray.length) {
count = 0;
}
}, 1000);
相关文章:
- 循环遍历以数组为值的Javascript对象
- 循环遍历包含另一个表单的表单
- JS.循环遍历多维数组,以计数元素在每列中的出现次数
- js循环遍历单击的元素子节点
- 根据PHP中数组的长度在Google Maps API中循环遍历标记
- 循环遍历元素jquery选择器
- 无法在javascript中循环遍历对象数组
- 在循环遍历对象 HTMLDivElement 时,应用 ChileNode 样式 zindex 在 firefox 和
- 如何在DataTablesjQuery中循环遍历所有行
- 使用函数for循环遍历对象以更改值,然后返回结果
- 遍历 jQuery:循环遍历子项
- 循环遍历平行层
- 循环遍历 jqGrid 中的 colModels 名称
- jQuery 插件不会循环遍历匹配的项目
- 循环遍历 JSON 对象
- 一次循环遍历一组
- 循环遍历表行,获取总计和更新行
- 循环遍历 DOM 元素时,是否有 for 循环的替代方法
- 使用 ajax、PHP 和 Javascript 循环遍历 JSON 文件
- 循环遍历单选按钮(20 组,每组 3 个),并检查是否选中了每个组