Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript天数每月持续超过31天_Javascript_Html_Dom - Fatal编程技术网

Javascript天数每月持续超过31天

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>

因此,我试图创建一个每周的时间表,每天更新一次,以便显示当前日期和接下来的六天。我正在使用JS函数来实现这一点。

看起来是这样的。
以下是用于第一行的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可能会很有用。