如何从当前日期开始循环遍历天数组



我构建了一个简单的应用程序,可以从数组中打印天数。当你点击按钮时,你会打印另一天和另一天等等。但是,当我添加一个起点——当天——我无法循环到接下来的几天。

const days = [
"Monday ",
"Tuesday ",
"Wednesday ",
"Thursday ",
"Friday ",
"Saturday ",
"Sunday ",
];
const btn = document.querySelector("#btn");
let d = new Date();
let currentDay = d.getDay();
const list = document.querySelector("#list");
let i = 0;
btn.addEventListener("click", function () {
let newEl = document.createElement("li");
newEl.textContent = days[currentDay];
// this is the place where I'm stuck
// I cannot write: days[currentDay]++
i++;
if (i >= days.length) i = 0;
list.append(newEl);
});
<h2>Days of the week:</h2>
<ul id="list"></ul>
<button id="btn">Add one more day</button>

getDay((方法返回星期几,其中0表示星期日

也许你所要做的就是让周日成为阵列的第一个元素

请尝试以下代码

const days = [
"Sun",
"Mon",
"Tue",
"Wed",
"Thu",
"Fri",
"Sat",
];
var currentDay = new Date().getDay();  // Sun = 0, Mon = 1, ..., Sat = 6 
console.log(days[currentDay]);
console.log(days[currentDay + 1]);

希望我没有误解你的问题

Fabio

您使用的是days[currentDay]。但由于currentDay不会改变,它不会在中工作


我们走这条路:

  1. 在获得currentDay后,将i设置为currentDay(这是可以的,因为您的数组具有正确的顺序,我们也可以使用indexOf

  2. 使用i作为索引显示日期:

const days = [
"Monday ",
"Tuesday ",
"Wednesday ",
"Thursday ",
"Friday ",
"Saturday ",
"Sunday ",
];
const btn = document.querySelector("#btn");
let d = new Date();
let currentDay = d.getDay();
const list = document.querySelector("#list");
let i = currentDay;
btn.addEventListener("click", function () {
let newEl = document.createElement("li");
newEl.textContent = days[i];
i++;
if (i >= days.length) i = 0;
list.append(newEl);
});
<h2>Days of the week:</h2>
<ul id="list"></ul>
<button id="btn">Add one more day</button>

问题在于您正在尝试的++的位置。此外,您不需要额外的变量i

const days = [
"Monday ",
"Tuesday ",
"Wednesday ",
"Thursday ",
"Friday ",
"Saturday ",
"Sunday ",
];
const btn = document.querySelector("#btn");
let d = new Date();
let currentDay = d.getDay();
const list = document.querySelector("#list");
btn.addEventListener("click", function () {
let newEl = document.createElement("li");
newEl.textContent = days[currentDay++];

if (currentDay >= days.length) currentDay = 0;
list.append(newEl);
});

您正在递增i,但从未更改currentDay

在您的函数中,删除i并使用currentDay

这是代码:

const days = [
"Monday ",
"Tuesday ",
"Wednesday ",
"Thursday ",
"Friday ",
"Saturday ",
"Sunday ",
];
const btn = document.querySelector("#btn");
let d = new Date();
let currentDay = d.getDay();
const list = document.querySelector("#list");
btn.addEventListener("click", function () {
currentDay++; // add 1 to currentDay
if (currentDay > days.length) currentDay = 0; // reset currentDay to 0 each week
let newEl = document.createElement("li");
newEl.textContent = days[currentDay];  
list.append(newEl);
});

最新更新