<分区>
我正在自学一些核心网络技术,主要是 javascript php 和 mysql。我想创建一个将这三个联系在一起的事件日历。
我想我会用 javascript 绘制日历,然后使用 php 从 mysql 数据库添加事件。现在我想到的第一步是创建一个绘制日历的函数,然后我将使用 document.write 调用它。这是最合乎逻辑的方法吗?
<分区>
我正在自学一些核心网络技术,主要是 javascript php 和 mysql。我想创建一个将这三个联系在一起的事件日历。
我想我会用 javascript 绘制日历,然后使用 php 从 mysql 数据库添加事件。现在我想到的第一步是创建一个绘制日历的函数,然后我将使用 document.write 调用它。这是最合乎逻辑的方法吗?
最佳答案
这是您的开始:jsfiddle demo
在日期周围单击,您将看到选定
样式更改。
注意这取决于moment.js - 在 JavaScript 中处理日期/时间的基本库
样板 HTML
<ul id="calendar">
<li><span>Sun</span></li>
<li><span>Mon</span></li>
<li><span>Tue</span></li>
<li><span>Wed</span></li>
<li><span>Thu</span></li>
<li><span>Fri</span></li>
<li><span>Sat</span></li>
</ul>
一些 CSS
#calendar {
list-style-type: none;
padding: 0;
margin: 0;
}
#calendar li {
float: left;
width: 13%;
margin: 0 1% 1% 0;
}
#calendar li span {
display: block;
padding: 5px;
background-color: #eee;
}
#calendar li.selected span {
font-weight: bold;
text-decoration: underline;
}
#calendar li.today span {
background-color: #33f;
color: white;
}
#calendar li.offset-0 { margin-left: 0%; }
#calendar li.offset-1 { margin-left: 14%; }
#calendar li.offset-2 { margin-left: 28%; }
#calendar li.offset-3 { margin-left: 42%; }
#calendar li.offset-4 { margin-left: 56%; }
#calendar li.offset-5 { margin-left: 70%; }
#calendar li.offset-6 { margin-left: 84%; }
一点点 JavaScript
function Calendar(elem, date) {
// private data variables
var today = moment(date),
first = moment(today).date(1);
// private api
function createDay(n) {
var li = document.createElement("li"),
span = document.createElement("span");
span.innerHTML = n;
li.appendChild(span);
return li;
}
function addDay(n) {
var li = createDay(n);
if (n === 1) {
li.classList.add("offset-" + first.day());
}
if (n === today.date()) {
li.classList.add("today");
}
elem.appendChild(li);
}
function deselect(li) {
if (!li) return;
li.classList.remove("selected");
}
function select(li) {
deselect(elem.querySelector(".selected"));
li.classList.add("selected");
}
function onClick(event) {
select(event.srcElement.parentNode);
event.preventDefault();
}
// init
for (var i=1, days = today.daysInMonth(); i<=days; i++) {
addDay(i);
}
// event listeners
elem.addEventListener("click", onClick);
}
你可以像这样使用Calendar
function init() {
var cal = document.getElementById("calendar"),
today = new Date;
new Calendar(cal, today);
}
document.addEventListener("DOMContentLoaded", init);
关于javascript - 编写事件日历的第一步,从哪里开始?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22929053/
相关文章:
javascript - 当键名具有数值时,JSON.parse() 是否真的对属性进行排序?
javascript - d3 在数据更新时错误地附加了 dom 元素
javascript - 类型错误 : Reduce of empty array with no initial value in Angular
php - 找不到驱动程序 Debian SQL Server PHP
php - 实时混合应用程序没有 'Access-Control-Allow-Origin' 问题