嗨,我正在尝试从作者 xMark 的日历示例代码中学习 JavaScript。但他的例子使用星期日作为一周的第一天。我希望它显示星期一为一周的第一天。到目前为止,我只设法更改了标题标签,但没有更改日期的正确位置。https://codepen.io/xmark/pen/WQaXdv
所以我一直试图了解在他的代码中我可以让日期向左移动一步。但我无法弄清楚这种转变应该在代码中的哪个位置发生。
我最受困Calendar.prototype.showMonth = function(y, m) {...}
的部分是我认为需要更改的部分。在这个函数中我不明白作者为什么var k = lastDay_of_LastMonth - firstDay_of_Month+1;
在最后一个变量上加了+1?
在var k = ...
我彻底迷失之后。每当我试图改变事情时,整个日历就会破裂。
@唐纳德·特朗普
var d7 = new Date(2018, 6, 1);
d7
"Sun Jul 01 2018" 00:00:00 GMT+0200 (Central European Summer Time)
var firstDay_of_Month = new Date(2018, 6, 1).getDay();
firstDay_of_Month
0 // July 1st is on a Sunday.
//_________________________________________________________________
var d8 = new Date(2018, 7, 1);
d8
"Wed Aug 01 2018" 00:00:00 GMT+0200 (Central European Summer Time)
var firstDay_of_Month = new Date(2018, 7, 1).getDay();
firstDay_of_Month
3 // August 1st is on a Wednesday.
//_________________________________________________________________
var dNaguib = new Date(2018, 6, 7);
dNaguib
"Sat Jul 07 2018" 00:00:00 GMT+0200 (Central European Summer Time)
var dNaguib = new Date(2018, 6, 7).getDay();
dNaguib
6 // July 7th is on a Saturday.
// Why then does this dynamic code looking for the 7th each month
// make everything in the calendar work?
var firstDay_of_Month = new Date(y, m, 7).getDay(); // Naguib
// While the original code looking for the 1st each month make
// some months break the calendar?
var firstDay_of_Month = new Date(y, m, 1).getDay(); // Original
我浏览了您附带的代码笔,并浏览了代码中提到星期日的每个部分,并将其修改为:https : //codepen.io/naguibihab/pen/aKMYpB
以下是我所做的更改:https : //github.com/naguibihab/js-goodies/commit/aa14d87eea68860650aee3383b458a0b00fb64a9
我会解释为什么我做每一个改变,这让我回到了我的大学时代,我必须解释我的代码,所以请耐心等待:
1:
this.DaysOfWeek = [
'Mon',
'Tue',
'Wed',
'Thu',
'Fri',
'Sat',
'Sun'
];
那是日历中标题行的标题,那只是文本,那里没有逻辑变化
2:firstDayOfMonth = 6
你这个月的第一天现在是星期一而不是星期日,你也可以写, firstDayOfMonth = new Date(y, m, 7).getDay()
得到相同的结果,但我认为第一个让读者更清楚,因为6
无论如何我们都会得到
3:if ( dow == 1 ) {
在星期一而不是星期日开始新的一行
4:if ( dow == 0 ) {
在周日而不是周六关闭行
5:for(dow; dow < 7; dow++) {
下个月的“非当前”数字可能会上升到星期日,因此我们需要在那里进行额外的迭代(可能有更好的方法可以在不增加迭代的情况下做到这一点,但我现在懒得弄清楚)
它主要是一种“尝试改变某些东西,然后看看会发生什么”的方法来达到目标,所以我所做的是检查每个我怀疑星期天影响代码的区域,并尝试对其进行更改以查看会发生什么。
如果这还不够合理,请在评论中告诉我。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句