javascript - 在日历中画一条线
问题描述
在日历javascript中来自数据库的两个日期之间绘制一条动态线
此代码正在生成日历
{
var noDays = new Date(2019, 8, 0).getDate(); //new Date(year, month, 0).getDate();
var days = ["Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"],
months = [
"Jan",
"Feb",
"Mar",
"Apr",
"May",
"Jun",
"Jul",
"Aug",
"Sep",
"Oct",
"Nov",
"Dec"
],
counter = 0,
liCon = "",
date = new Date();
document.getElementById("monthName").innerText = months[date.getMonth()];
var t = document.createElement("ul");
t.classList.add("days-wrapper");
for (var i = 1; i <= noDays; i++) {
console.log(i, days[counter], counter);
var liString = `<li class="days ${
days[counter] == "Su" ? "text-red" : "text-black"
}">
<div class='day-name'>${days[counter]}</div>
<div class='day-number'>${i}</div>
</li>`;
liCon = liCon + liString;
counter++;
if (i % 7 === 0) {
//get the day name printed
counter = 0;
console.log(t, liCon);
}
t.innerHTML = liCon;
console.log(t);
document.getElementById("main").appendChild(t);
}
}
解决方案
我不得不猜测日历 HTML 和 CSS,但这里有一些东西供您尝试
var noDays = new Date(2019, 8, 0).getDate(); //new Date(year, month, 0).getDate();
var days = ["Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"],
months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
counter = 0,
liCon = "",
date = new Date();
document.getElementById("monthName").innerText = months[date.getMonth()];
var t = document.createElement("ul");
t.classList.add("days-wrapper");
var pDays = true
for (var i = 1; i <= noDays; i++) {
var liString = `<li class="days ${days[counter] == "Su" ? "text-red" : "text-black"}">` +
`<div class='day-name'>` + (pDays ? `${days[counter]}` : "") + `</div>` +
// `<div class='day-name'>${days[counter]}</div>`+
`<div class='day-number'>${i}</div>
</li>`;
liCon = liCon + liString;
counter++;
if (i % 7 === 0) {
//get the day name printed
pDays = false;
counter = 0;
liCon += "<br/>"
}
t.innerHTML = liCon;
document.getElementById("main").appendChild(t);
}
var line = document.getElementById("line");
var lc = document.getElementById("lineContainer");
line.width="120px"; // calculate from offsetLeft or right of the to-date LI
var leftDay = document.querySelector(".days .day-number")
line.style.left=(leftDay.style.left+leftDay.offsetWidth)+"px"
line.style.top="100px"; // calculate that from the row times rowHeight
.text-red {
color: red
}
.text-black {
color: black
}
ul {
list-style-type: none;
margin: 0;
padding: 0;
}
ul li {
font-size: 20px;
text-transform: uppercase;
letter-spacing: 3px;
display: inline-block;
}
.day-name {
width: 2em;
text-align: right;
}
.day-number {
text-align: right;
}
#line { position:absolute; display: inline-block; }
<div id="main">
<div id="monthName"></div>
</div>
<div>
<div id="lineContainer"><hr id="line"/></div>
推荐阅读
- javascript - 多个日历,每个月在单个页面上,每个日期的事件颜色
- sql-server - 在单个查询中使用 CASE 更新 SQL 表中的多个列
- javascript - 我想使用 python 脚本在 html 中动态更新表格
- java - 使用带有 Android Room 的 @Insert 注释跳过 null
- git - 空格扩展以匹配 git 存储库
- python - SPSS 语法之外的 Python 函数
- c# - 如何使用 EF 核心从相关表中获取数据?
- python - 如何在odoo json控制器中将纯文本数组返回到json请求
- android - 使用 java.lang.RuntimeException 构建的 android 应用程序在启动时崩溃
- javascript - 在javascript中将多个对象转换为数组