javascript - 日历在正确的位置添加日期
问题描述
我在学校被分配了一个制作年历的任务,但它的间距不正确(第一个月结束的那一天应该是第二个月开始的那一天)。
我目前拥有的代码添加了 12 个具有适当天数的日历。
问题总结:
- 第 1 个月在星期五结束,第 2 个月从星期六开始。
- 欢迎任何提示
编码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>OPDRACHT 13
</title>
<style>
.table{
display:table;
margin:15px;
font-size: 30px;
}
.row{
width:1500px;
display: table-row;
font-size: 16px;
}
.cell{
font-size: 16px;
width:150px;
height:50px;
border:1px solid black;
display:table-cell;}
.row:first-of-type{font-weight: bold;}
</style>
</head>
<body>
<div class="cntain" id="cntain"></div>
<script>
run = 0;
months = [
["januarie",31],["februarie",28],["maart",31],
["april",30],["mei",31],["juni",30],
["juli",31],["augustus",31],["september",30],
["oktober",31],["november",30],["december",31]];
weekdagen = ["maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag","zondag"]
nu = new Date();
int_d = new Date(nu.getFullYear(), nu.getMonth()+1,1);
d = new Date(int_d - 1);
var lastday=0;
function maketable(month){
table = document.createElement("div");
table.className = "table"
table.setAttribute("id", months[month][0]);
titl = document.createTextNode(months[month][0]);
table.appendChild(titl);
document.getElementById("cntain").appendChild(table);
y = 0
u = 0
for (x=0;x<7;x++){
rows = document.createElement("div");
rows.className = "row"
rows.setAttribute("id", months[month][0]+x);
document.getElementById(months[month][0]).appendChild(rows);
}
let start = x+lastday;
let day =1;
x=0
for (x=0;x<49;x++){
xy = Math.floor(x/7)
//console.log(xy)
weekday = weekdagen[x]
dag = document.createElement("div");
wkday = document.createTextNode(weekday);
if(x < 7){dag.appendChild(wkday)}
if (x > 6 && x < (months[month][1]+start) && start <= x){
yeh = document.createTextNode((x-6));
dag.appendChild(yeh);}
else{
nope = document.createTextNode(" ");
dag.appendChild(nope);
}
dag.className = "cell dag"+(x-11);
if (xy < 7){
//console.log(xy)
document.getElementById(months[month][0]+xy).appendChild(dag);}
else{break;}
}
lastday = months[month][1]%7;
run++
var hvy = parseInt(months[month][1]);
console.log(hvy-7)
}
maketable(0);
maketable(1);
maketable(2);
maketable(3);
maketable(4);
maketable(5);
maketable(6);
maketable(7);
maketable(8);
maketable(9);
maketable(10);
maketable(11);
</script>
</body>
</html>
解决方案
它正在按照我现在想要的方式工作。每个人都感谢您的提示
代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>OPDRACHT 13
</title>
<style>
.table{
display:table;
margin:15px;
font-size: 30px;
}
.row{
width:1500px;
display: table-row;
font-size: 16px;
}
.cell{
font-size: 16px;
width:150px;
height:50px;
text-align: center;
line-height: 50px;
border:1px solid black;
display:table-cell;}
.row:first-of-type{font-weight: bold;}
.dag1{background-color: lightgrey;}
h1{font-size: 45px;margin-left: 400px;}
</style>
</head>
<body>
<h1 id="caltitle"></h1>
<div class="cntain" id="cntain"></div>
<script>
run = 0;
weekdagen = ["maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag","zondag"]
nu = new Date();
int_d = new Date(nu.getFullYear(), nu.getMonth()+1,1);
d = new Date(int_d - 1);
var lastday=0;
year = prompt('jaar')
document.getElementById("caltitle").innerHTML = year+" calender"
function maketable(month){
months = [
["januari",new Date(year, 1, 0)],
["februari",new Date(year, 2, 0)],
["maart",new Date(year, 3, 0)],
["april",new Date(year, 4, 0)],
["mei",new Date(year, 5, 0)],
["juni",new Date(year, 6, 0)],
["juli",new Date(year, 7, 0)],
["augustus",new Date(year, 8, 0)],
["september",new Date(year, 9, 0)],
["oktober",new Date(year, 10, 0)],
["november",new Date(year, 11, 0)],
["december",new Date(year, 12, 0)],
["start",new Date(year-1, 12, 0)]];
table = document.createElement("div");
table.className = "table"
table.setAttribute("id", months[month][0]);
titl = document.createTextNode(months[month][0]);
table.appendChild(titl);
document.getElementById("cntain").appendChild(table);
y = 0
u = 0
for (x=0;x<7;x++){
rows = document.createElement("div");
rows.className = "row"
rows.setAttribute("id", months[month][0]+x);
document.getElementById(months[month][0]).appendChild(rows);
}
if (run == 0){
lastday = months[12][1].getDay();
}
let start = x+lastday;
let day =1;
x=0
//console.log(run)
if(start >= 14){start=start-7}
if(start < 7){start=start+7}
for (x=0;x<60;x++){
xy = Math.floor(x/7);
weekday = weekdagen[x]
dag = document.createElement("div");
wkday = document.createTextNode(weekday);
if(x < 7){dag.appendChild(wkday)}
if (x > (start-1) && x < (months[month][1].getDate()+(start))){
//console.log(months[month][0]+" "+months[month][1].getDate() +" "+start)
yeh = document.createTextNode((x-start+1));
dag.appendChild(yeh);}
else{
nope = document.createTextNode(" ");
dag.appendChild(nope);
}
dag.className = "cell dag"+(x-(start-1));
if (xy < 7){
//console.log(xy)
document.getElementById(months[month][0]+xy).appendChild(dag);}
else{break;}
}
lastday = months[month][1].getDay();
console.log(months[month][1]+" "+lastday);
run++
}
maketable(0);
maketable(1);
maketable(2);
maketable(3);
maketable(4);
maketable(5);
maketable(6);
maketable(7);
maketable(8);
maketable(9);
maketable(10);
maketable(11);
</script>
</body>
</html>
推荐阅读
- r - 如何将一列拆分为多个固定大小的整数?
- javascript - 如何从一行文本中删除一个字符
- hibernate - JPQL 多对多与 in 子句
- c# - C# FFT 实现未产生预期结果
- epplus - 使用 EPPlus 计算百分位数
- c# - FolderbrowserDialog 在发布版本(WindowsForms)中不展开“SelectedFolder”
- wordpress - 如何将 ACF 转发器设置为每行仅显示 X 个项目
- python - 在python中使用正则表达式匹配任何字符和/或未定义的换行符
- android - 如何在 Android Q 的外部存储中创建目录?
- liquibase - Liquibase 不适用于更改 Spring Boot 配置文件