Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.12.2012, 17:35
Новичок на форуме
Отправить личное сообщение для Mantorrash Посмотреть профиль Найти все сообщения от Mantorrash
 
Регистрация: 19.12.2012
Сообщений: 2

Помогите разобраться с механизмом вызова функции
Здравствуйте, недавно начал осваивать JS/CSS. Хочу сделать небольшой учебный проект.
Функция рисует таблицу на основе заданного значения переменной. Ячейки таблицы отображаются с использованием классов стилей. При загрузке страницы вызывается данная функция, рисует все так как и задумано. При нажатии на кнопку изменяется значение переменной, и снова запускает функцию, она рисует таблицу но уже без стилей, хотя функция классы стилей присваивает правильно.(стили описаны в заголовке) При следующем нажатии на кнопку функция не работает, в консоль выводится ошибка: переменная на описана. (переменная описана с том же теге JS, перед функцией.
Подскажите, в каком направлении искать ошибку?

Заранее спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 19.12.2012, 17:56
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Исходник пожалуйста.
Ответить с цитированием
  #3 (permalink)  
Старый 19.12.2012, 18:07
Новичок на форуме
Отправить личное сообщение для Mantorrash Посмотреть профиль Найти все сообщения от Mantorrash
 
Регистрация: 19.12.2012
Сообщений: 2

Календарь на текущий месяц. Проблемная функция 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 = '&nbsp;';
							}
						}
						if(i>1)
						{
							if(k<=mon[m])
							{
								cellvalue = k;
								if (d==cellvalue)
								{
									cellstyle = 'cc';
								}
							}
							else 
							{
								cellvalue = '&nbsp;';
							}
							k++;
						}
						window.document.write('<td class = "'+cellstyle+'">'+cellvalue+'</td>');
					}
					window.document.write ('</tr>');
				}
				window.document.write ('</table> ');
				k=1;
			}
			Reload ();
		</script>
	</body> 
</html>
Ответить с цитированием
  #4 (permalink)  
Старый 20.12.2012, 09:07
Аватар для ОлегА
Профессор
Отправить личное сообщение для ОлегА Посмотреть профиль Найти все сообщения от ОлегА
 
Регистрация: 25.08.2011
Сообщений: 420

проблема была в 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 = '&nbsp;';
							}
						}
						if(i>1)
						{
							if(k<=mon[m])
							{
								cellvalue = k;
								if (d==cellvalue)
								{
									cellstyle = 'cc';
								}
							}
							else 
							{
								cellvalue = '&nbsp;';
							}
							k++;
						}
						html += '<td class = "'+cellstyle+'">'+cellvalue+'</td>';
					}
					html +='</tr>';
				}
				html +='</table>';
				k=1;
				kalendar_div.innerHTML = html;
				return false;
			}
			Reload ();
		</script>

	</body> 
</html>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите разобраться: false, null?? eirnvn Общие вопросы Javascript 12 12.11.2012 22:22
Вставка элемента в место вызова функции belkir Элементы интерфейса 21 05.08.2011 08:59
Строка вызова функции DMH Общие вопросы Javascript 11 10.08.2010 09:06
Помогите пожалуйста разобраться Kupu4 Ваши сайты и скрипты 0 21.01.2010 10:44
Помогите разобраться в повторным обращении к функции, как её обнулить. AdvoGad Общие вопросы Javascript 0 01.09.2008 11:35