[英]javascript: making a calendar navigation bar
當我單擊該功能時,一切都會出錯。 我有什么問題 我為此奮斗了幾個月。 我單擊按鈕,並期望月份數會增加或減少。 告訴我正確的結果。
<!DOCTYPE html>
<html>
<style>
table
{
border-collapse:collapse;
}
table img
{
width:50px;
height:50px;
}
td,table
{
border-color:blue;
text-align:center;
}
td:hover
{
cursor:pointer;
background-color:yellow;
}
</style>
<head>
</head>
<body>
<script>
var date=new Date();
var mn=['JAN','FEB','MAR','APR','MAY','JUN','JUL','AUG','SEP','OCT','NOV','DEC'];
y=date.getFullYear();
m=date.getMonth();
function preyear()
{
y -= 1;
calendar();
}
function premonth(){
m -= 1;
calendar();
}
function nextmonth(){
m += 1;
calendar();
}
function nextyear(){
y += 1;
calendar();
}
function today(){
y=date.getFullYear();
m=date.getMonth();
calendar();
}
function calendar(){
document.write("<table border=1><tr><td colspan=8>"+mn[m]+' '+y+"</td></tr>");
document.write("<tr><td colspan='8'><button value='preyear' onclick='preyear()'><button value='premonth' onclick='premonth()'><button value = 'today' onclick = 'today()'><button value = 'nextmonth' onclick='nextmonth()'><button value = 'nextyear' onclick = 'nextyear()'></td></tr>");
document.write ("<tr><td>S</td><td>M</td><td>T</td><td>W</td><td>T</td><td>F</td><td>S</td><td>W</td></tr>");
document.write("<tr>");
for (var i=1; i<43; i++){
var fday=new Date(y,m,1);
days=new Date(y,m,i-fday.getDay());
if (days.toDateString()== date.toDateString()){
document.write("<td style=color:red>"+days.getDate()+"</td>");
}
else{
document.write("<td>"+days.getDate()+"</td>");
}
if (i%7 == 0){
var onejan=new Date(y,0,1);
document.write("<td>"+Math.ceil(((days-onejan)/(60*60*24*1000)+1)/7) +"</td></tr><tr>");
}
}
document.write("</tr></table>");
}
calendar();
</script>
</body>
</html>
當您第二次使用document.write時,調用calender函數時,您將重寫整個HTML,並且您的<head>
標記會丟失。
在頁面加載完成后使用document.write時會發生這種情況,應改為使用以下代碼:
<!DOCTYPE html>
<html>
<style>
table
{
border-collapse:collapse;
}
table img
{
width:50px;
height:50px;
}
td,table
{
border-color:blue;
text-align:center;
}
td:hover
{
cursor:pointer;
background-color:yellow;
}
</style>
<head>
</head>
<body>
<script>
var date=new Date();
var mn=['JAN','FEB','MAR','APR','MAY','JUN','JUL','AUG','SEP','OCT','NOV','DEC'];
y=date.getFullYear();
m=date.getMonth();
function preyear()
{
y -= 1;
calendar();
}
function premonth(){
m -= 1;
calendar();
}
function nextmonth(){
m += 1;
calendar();
}
function nextyear(){
y += 1;
calendar();
}
function today(){
y=date.getFullYear();
m=date.getMonth();
calendar();
}
function calendar(){
var html = "";
html += "<table border=1><tr><td colspan=8>"+mn[m]+' '+y+"</td></tr>";
html += "<tr><td colspan='8'><button value='preyear' onclick='preyear()'><button value='premonth' onclick='premonth()'><button value = 'today' onclick = 'today()'><button value = 'nextmonth' onclick='nextmonth()'><button value = 'nextyear' onclick = 'nextyear()'></td></tr>";
html += "<tr><td>S</td><td>M</td><td>T</td><td>W</td><td>T</td><td>F</td><td>S</td><td>W</td></tr>";
html += "<tr>";
for (var i=1; i<43; i++){
var fday=new Date(y,m,1);
days=new Date(y,m,i-fday.getDay());
if (days.toDateString()== date.toDateString()){
html += "<td style=color:red>"+days.getDate()+"</td>";
}
else{
html += "<td>"+days.getDate()+"</td>";
}
if (i%7 == 0){
var onejan=new Date(y,0,1);
html += "<td>"+Math.ceil(((days-onejan)/(60*60*24*1000)+1)/7) +"</td></tr><tr>";
}
}
html += "</tr></table>";
document.body.innerHTML = html;
}
calendar();
</script>
</body>
</html>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.