Javascript天数每月持续超过31天
因此,我试图创建一个每周的时间表,每天更新一次,以便显示当前日期和接下来的六天。我正在使用JS函数来实现这一点。 看起来是这样的。Javascript天数每月持续超过31天,javascript,html,dom,Javascript,Html,Dom,因此,我试图创建一个每周的时间表,每天更新一次,以便显示当前日期和接下来的六天。我正在使用JS函数来实现这一点。 看起来是这样的。 以下是用于第一行的html。 <thead class="lighter"> <tr> <th class="fit fit align-middle" scope="col">CRC/Jour</th>
以下是用于第一行的html。
<thead class="lighter">
<tr>
<th class="fit fit align-middle" scope="col">CRC/Jour</th>
<th id="day1" class="fit" scope="col"></th>
<th id="day2" class="fit" scope="col"></th>
<th id="day3" class="fit" scope="col"></th>
<th id="day4" class="fit" scope="col"></th>
<th id="day5" class="fit" scope="col"></th>
<th id="day6" class="fit" scope="col"></th>
<th id="day7" class="fit" scope="col"></th>
</tr>
CRC/日
这是我的js代码:
for (let i = 1; i < 8; i++) { //I tried using a loop so it we'll do the automation but it doesn't work as expected
let date = new Date(),
day = date.getDate()+i-1,
month = date.getMonth() + 1,
year = date.getFullYear();
//This is for showing the days names in the specified cells (it's in french)
let days=["Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"];
date.setDate(date.getDate() + i-1);
document.getElementById("day"+i).innerHTML=
`${days[date.getDay()]} <br> ${day}/${month}/${year}`;
}
}
for(让i=1;i<8;i++){//我尝试使用一个循环,这样我们就可以实现自动化,但它没有按预期工作
让日期=新日期(),
day=date.getDate()+i-1,
月=日期。getMonth()+1,
年份=日期。getFullYear();
//用于在指定单元格中显示日期名称(法语)
let days=[“迪曼奇”、“隆迪”、“马尔迪”、“美塞雷迪”、“朱迪”、“文德雷迪”、“萨梅迪”];
date.setDate(date.getDate()+i-1);
document.getElementById(“day”+i).innerHTML=
`${days[date.getDay()]}
${day}/${month}/${year}`;
}
}
我注意到的另一件事是当我使用
addEventListener('onload',function(){})
它不起作用,我也不知道为什么。正如评论中的人所建议的那样,我尝试使用库(确切地说是dayjs),但不知道如何使用,因为我还没有学会
根据@Teemu的建议(对整个星期稍作修改),我使用了
date.setDate(date.getDate()+I-1)
然后使用day=date.getDate()
作为day值,它成功了通过一个小搜索,我发现
setDate
方法将一个月的“day”整数作为参数参考:
最终函数如下所示:
window.addEventListener('load',function () {
for (let i = 1; i < 8; i++) {
let date = new Date();
date.setDate(date.getDate()+i-1);
let day = date.getDate(),
month = date.getMonth() + 1,
year = date.getFullYear();
let days=["Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"];
document.getElementById("day"+i).innerHTML=
`${days[date.getDay()]} <br> ${day}/${month}/${year}`;
}
})
window.addEventListener('load',function(){
for(设i=1;i<8;i++){
让日期=新日期();
date.setDate(date.getDate()+i-1);
let day=date.getDate(),
月=日期。getMonth()+1,
年份=日期。getFullYear();
let days=[“迪曼奇”、“隆迪”、“马尔迪”、“美塞雷迪”、“朱迪”、“文德雷迪”、“萨梅迪”];
document.getElementById(“day”+i).innerHTML=
`${days[date.getDay()]}
${day}/${month}/${year}`;
}
})
Ps:感谢@Reyno的澄清,我通过对type参数使用
load
修复了addEventListener('onload',function(){})
问题。您不是从日期对象读取day
,而是直接显示day
的值。您需要进行检查以查看它是哪个月(如果它有28天、30天或31天),它是哪一天(如果是那个月,将天重置为1,并在那里使用I值。注意:有很多其他方法可以做到这一点(通过使用库。你的循环不断增加日期值,所以这是意料之中的。如果你可以使用矩
库,使用添加()
获取序列中下一个日期的时刻的实用方法(它自动处理月末等)。addEventListener('onload',function(){})
不起作用,因为
前缀上的是不必要的。只有在将事件直接添加到元素(如:button.onclick=…
)上时才使用它。任务不需要库,只需执行date.setDate(date.getDate()+1);day=date.getDate();
。这样,Date对象就可以为day
值计算正确的日期。不过,如果您在代码的其他地方使用日期,moment.js可能会很有用。