Доброго здравия всем!
Возникла задача создать календарик на страничке, чтоб отображал содержимое новостной ленты из базы. В нете нашел исходник календарика, решил его переделать под DOM, чтоб при нажатии на кнопочки динамически менялись месяца, годы и т.д. Но где-то в коде (да и в моем понимании) вкрался баг. Вот код того, что получилось:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<link rel="stylesheet" TYPE="text/css" href="calendar.css" > <!-- таблица стилей для календаря -->
</head>
<body>
<script src="calendar.js"></script>
<script>
function DoIt(y,m,d)
{alert('Типа посылаю запрос к БД хде WHERE Date='+ d+'.'+(m+ 1 )+'.'+y+' :-)');}
function Action(val)
{
var now = new Date();
var yr = now.getFullYear ();
var mth = now.getMonth();
var day = now.getDate();
var i,j;
var txt;
var EmptyArr = new Array( 0 );
var Href_Arr = new Array();
for(var i= 0 ; i<day; ++i) {Href_Arr[i]=i+ 1 ;}
var Href_ArrPrev = new Array();
j= 0 ;
for(var i= 1 ; i<= 30 ; i+= 3 ) {Href_ArrPrev[j]=i; j++;}
var tabbd = document.getElementById( "tablebody" );
if(!tabbd )
{
var table = document.getElementById( "table" );
var tbody = document.createElement( "tbody" );
tbody.id = "tablebody";
table.appendChild( tbody );
tabbd = document.getElementById( "tablebody" );
}
while( tabbd.hasChildNodes() )
{
var tmp = tabbd.childNodes[ 0 ];
tabbd.removeChild( tmp );
}
var tr = document.createElement( "tr" );
var td = document.createElement( "td" );
var i=val;
if (i<mth)
{
if(i==(mth- 1 )) txt = drawCal(yr, i, 0 , 0 , 0 , Href_ArrPrev, "DoIt")
else txt = drawCal(yr, i, 0 , 0 , 0 , null, "DoIt")
}
else
{
if (i==mth) txt = drawCal(yr, i, 0 , 0 , day, Href_Arr, "DoIt")
else txt = drawCal(yr, i, 0 , 0 , 0 , EmptyArr, "DoIt")
};
var tdtxt = document.createElement(txt);
td.appendChild( tdtxt );
tr.appendChild( td );
tabbd.appendChild( tr );
}
</script>
<form action="" method="get">
<table id="table" width="35%" border="1" cellspacing="2" cellpadding="6">
<tr>
<td>
<div align="center">
<select id="sel" name="basatable" onChange="javascript:Action(this.value)">
<?php
for ($i= 0 ;$i!= 12 ;$i++)
echo "<option value=\"".$i."\">".$i."</option>\n";
?>
</select>
<input type="submit" value="Выбрать">
</form>
</div>
</td>
</tr>
<tbody id="tablebody" align="center"></tbody>
</table>
<SCRIPT language=JavaScript>
var selct = document.getElementById( "sel" );
Action(selct.value)</SCRIPT>
</body>
</html>
Результат - календарика нет.
Функция drawCal выдает html код в виде текста таблички нового месяца. Подозреваю, что ошибка здесь кроется в строке
1.
var tdtxt = document.createElement(txt);
но как поправить - не догоняю.
Благодарю за помощь и содействие!