2015-11-03 78 views
1

我已經搜索了很多天,如何製作一個日曆(沒有插件/庫),周以星期一開始,週日開始工作。這裏我的解決方案星期一開始的星期一/ Vanilla JS /沒有jQuery

使用天的這個命令標籤:

var days_labels = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']; 

關鍵是當你定義一週的第一天(0是星期日),使用此:

var first_day = new Date(this.year, this.month, 1), 
    first_day_weekday = first_day.getDay() == 0 ? 7 : first_day.getDay(); 

在人類語言:如果first_day是星期天(0),使用7,否則使用初始值。

有了這個所有的循環是正確的,並在每個月完美的作品。全面例如:http://codepen.io/jacknumber/pen/RWLyQW

毫無疑問,它在這個問題上的用戶搜索幫助 感謝

(隨時糾正我的英語:))

+0

自我回答一個問題是好的,但實際上你需要*後兩個問題和答案*(你會一段時間後能夠接受)。通過這種方式,其他人也可以用他們的答案作出響應,誰知道......也許有人會得出比你更好的答案。 –

+0

太糟糕'days_labels [first_day_weekday]'會給出錯誤的結果,甚至在星期天失敗。 – trincot

回答

1

在您需要定義代碼每個月都有一週開始。與其他編程語言一樣,Javascript在週日前開始數週。要更改星期定單,您可以使用新的定單順序定義數組。星期日歸還零(星期一在陣列中),因此將它設置爲7(星期日在數組中)。

龍版本:

var first_day = new Date(this.year, this.month, 1), 
    first_day_weekday; 
if (first_day.getDay() == 0) { 
    first_day_weekday = 7; 
} else { 
    first_day_weekday = first_day.getDay(); 
} 

短版:

var first_day = new Date(this.year, this.month, 1), 
    first_day_weekday = first_day.getDay() == 0 ? 7 : first_day.getDay(); 
相關問題