gpt4 book ai didi

本月之前的 Javascript getDate()

转载 作者:行者123 更新时间:2023-11-28 01:24:31 26 4
gpt4 key购买 nike

我有一些纯 javascript 日历。我的问题是我想在所选月份之前添加天数。

|so|mo|di|mi|do|fr|sa|
______________________
|29|30|31|1 |2 |3 | 4| <-- here 29,30,31
______________________
|5 |6 |.....

我希望我的意思很清楚。这是我的脚本

<script type="text/javascript">
function Calendar(id, year, month) {
var elem = document.getElementById(id)

var mon = month - 1 // (1)
var d = new Date(year, mon)

var table = ['<table><tr>']

for (var i=0; i<d.getDay(); i++) {
table.push('<td></td>') // here days before this mounth
}

// main body (3)
while(d.getMonth() == mon) {
table.push('<td>'+d.getDate()+'</td>')

if (d.getDay() % 7 == 6) { // (4)
table.push('</tr><tr>')
}

d.setDate(d.getDate()+1)
}

n = 1
for (var i=d.getDay(); i<8; i++) {

table.push('<td>' + (n++) + '</td>')

}

table.push('</tr></table>')

elem.innerHTML = table.join('\n')
}
new Calendar("cal", 2015, 9)
</script>

我尝试使用 setDate(),但我没有掌握它。

最佳答案

如评论中所述,setDate(和 Date 构造函数)可以具有负值。但不是 prepost 循环,您可以将 startdate 设置为一周的开始,并始终添加整周:

function Calendar(id, year, month) { 
var elem = document.getElementById(id)

var mon = month - 1; // (1)
var d = new Date(year, mon, 1 );
var start = 1-d.getDay();

var table = ['<table>'];
while(d.getMonth() <= mon) {
table.push('<tr>');
for(var i =0 ; i< 7; i++){
d = new Date(year,mon,start++);
table.push('<td>'+d.getDate() + '</td>')
}
table.push('</tr>');
}
table.push('</table>')

elem.innerHTML = table.join('\n')
}
new Calendar("cal", 2015, 9);

fiddle

编辑:一个替代版本以防“其他”月份应该有更浅的颜色:fiddle

关于本月之前的 Javascript getDate(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32653455/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com