Помогите разобраться с механизмом вызова функции
Здравствуйте, недавно начал осваивать JS/CSS. Хочу сделать небольшой учебный проект.
Функция рисует таблицу на основе заданного значения переменной. Ячейки таблицы отображаются с использованием классов стилей. При загрузке страницы вызывается данная функция, рисует все так как и задумано. При нажатии на кнопку изменяется значение переменной, и снова запускает функцию, она рисует таблицу но уже без стилей, хотя функция классы стилей присваивает правильно.(стили описаны в заголовке) При следующем нажатии на кнопку функция не работает, в консоль выводится ошибка: переменная на описана. (переменная описана с том же теге JS, перед функцией. Подскажите, в каком направлении искать ошибку? Заранее спасибо. |
Исходник пожалуйста.
|
Календарь на текущий месяц. Проблемная функция reload, переменная m
<html> <head> <style> td { text-align:center; } td.bc { color:red; } td.hc { color:green; } td.pc { font-weight:bold; color:red; } td.cc { background:yellow; } </style> </head> <body> <script type = "text/javascript"> Month = new Array ('Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'); wek = new Array ('пн','вт','ср','чт','пт','сб','вс'); mon = new Array (31,28,31,30,31,30,31,31,30,31,30,31); hol = new Array (1,23,8,0,9,12,0,0,0,0,4,12); now = new Date(); d = now.getDate(); m = now.getMonth(); y = now.getFullYear(); y0 = 2000; m0 = 0; d0 = 1; dw0 = 6; k=1; s=0; dw=1; for (i = y0; i<y; i++) { if (i%4==0) { s=s+366; } else { s+=365; } } if (y%4==0) { mon [1]=29; } else { mon [1]=28; } for (j=m0; j<m; j++) { s=s+mon[j]; } dw =(s+d+1)%7; if (dw==0) { dw=7; } function Reload() { window.document.write ('<input type="button" value="<<" onclick="m--;Reload();"/>'); window.document.write ('<table width = "400px" height = "250px">'); for ( i=0; i<7;i++) { window.document.write ('<tr>'); for ( j=0; j<7; j++) { cellstyle = 'bc'; if (j<=5) { cellstyle = 'vc'; } if (k==hol[m]) { cellstyle = 'pc'; } if (i==0) { cellvalue = wek[j]; cellstyle = 'hc'; } if(i==1) { if ((j+1)>=dw) { cellvalue = k; k++; } else { cellvalue = ' '; } } if(i>1) { if(k<=mon[m]) { cellvalue = k; if (d==cellvalue) { cellstyle = 'cc'; } } else { cellvalue = ' '; } k++; } window.document.write('<td class = "'+cellstyle+'">'+cellvalue+'</td>'); } window.document.write ('</tr>'); } window.document.write ('</table> '); k=1; } Reload (); </script> </body> </html> |
проблема была в window.document.write вот так работает
<html> <head> <style> td { text-align:center; } td.bc { color:red; } td.hc { color:green; } td.pc { font-weight:bold; color:red; } td.cc { background:yellow; } </style> </head> <body> <div id="kalendar"></div> <script type = "text/javascript"> Month = new Array ('Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'); wek = new Array ('пн','вт','ср','чт','пт','сб','вс'); mon = new Array (31,28,31,30,31,30,31,31,30,31,30,31); hol = new Array (1,23,8,0,9,12,0,0,0,0,4,12); now = new Date(); d = now.getDate(); m = now.getMonth(); y = now.getFullYear(); y0 = 2000; m0 = 0; d0 = 1; dw0 = 6; k=1; s=0; dw=1; for (i = y0; i<y; i++) { if (i%4==0) { s=s+366; } else { s+=365; } } if (y%4==0) { mon [1]=29; } else { mon [1]=28; } for (j=m0; j<m; j++) { s=s+mon[j]; } dw =(s+d+1)%7; if (dw==0) { dw=7; } function Reload() { m--; kalendar_div = document.getElementById('kalendar'); html = '<input type="button" value="<<" onclick="return Reload();"/>'; html += '<table width = "400px" height = "250px">'; for ( i=0; i<7;i++) { html +='<tr>'; for ( j=0; j<7; j++) { cellstyle = 'bc'; if (j<=5) { cellstyle = 'vc'; } if (k==hol[m]) { cellstyle = 'pc'; } if (i==0) { cellvalue = wek[j]; cellstyle = 'hc'; } if(i==1) { if ((j+1)>=dw) { cellvalue = k; k++; } else { cellvalue = ' '; } } if(i>1) { if(k<=mon[m]) { cellvalue = k; if (d==cellvalue) { cellstyle = 'cc'; } } else { cellvalue = ' '; } k++; } html += '<td class = "'+cellstyle+'">'+cellvalue+'</td>'; } html +='</tr>'; } html +='</table>'; k=1; kalendar_div.innerHTML = html; return false; } Reload (); </script> </body> </html> |
Часовой пояс GMT +3, время: 05:36. |