Javascript.RU

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

вызов функции-родителя
Помогите пожалуйста, написал календарик сначала в процедурном стиле - все работало, потом решил через ОО подход. Проблема такова - пр и нажатии на < > вызывается функция, которая описана внутри функции createTable. Она удаляет из DOM календарь, а потом заново его создает функцией createTable. Но в реале, при нажатии на эту стрелку выдает ошибка Uncaught TypeError: Object #<HTMLTableCellElement> has no method 'createTable'
ошибка в 20 и 39 строке
Calendar.prototype.createTable = function(month,year){
	this.nowY = year;
	this.nowM = month;
	
	var table = document.createElement('table');
	table.id='calendar';
	var tbody = document.createElement('tbody');
	tr = this.appendElement(tbody,'tr');
	// вывод левой стрелки
	var td = document.createElement('td');
	this.appendText(td,'<');
	td.id="go_left";
	td.onclick = function(){
		table.parentNode.removeChild(table);
		this.nowM--;
		if(this.nowM==(-1)){
			this.nowM=11;
			this.nowY--;
		};
		this.createTable(this.nowM,this.nowY);
	};
	tr.appendChild(td);
	// вывод названия месяца и года
	var td = document.createElement('td');
	this.appendText(td,this.months[this.nowM]+" "+this.nowY);
	td.colSpan="5";
	tr.appendChild(td);
	// вывод правой стрелки
	td = document.createElement('td');
	this.appendText(td,'>');	
	td.id="go_right";
	td.onclick = function(){
		table.parentNode.removeChild(table);
		this.nowM++;
		if(this.nowM==12){
			this.nowM=0;
			this.nowY++;
		};
		this.createTable(this.nowM,this.nowY);
	};
	tr.appendChild(td);
	// расчет количества дней в году, день недели первого дня
	this.calc();
	// вырисовка календаря
	var d=0;
	for(var i=1; i<this.rowsCount+2; i++){
		var tr = document.createElement('tr');
		tbody.appendChild(tr);
		//для заголовков таблицы
		for(var j=0; j<7; j++){
		
			var td = document.createElement('td');;
			
			if(i==1){
				td.style.backgroundColor = 'red';
				this.appendText(td,this.days[j]);
			}else{
				var text = document.createTextNode(new Date(this.nowY,this.nowM,2-this.firstDofM+d).getDate());
				// дата, с которой будет начинаться календарь
				var temp = new Date(this.nowY,this.nowM,2-this.firstDofM+d);
				if( temp.getMonth() !== this.nowM){
					td.style.backgroundColor = 'gray';
				}
				if((temp.getMonth()== this.nowM) & (temp.getDate()==this.nowD)){
					td.style.backgroundColor = 'green';
				}
				
				td.appendChild(text);
				d++;
			};
			
			tr.appendChild(td);
		};
	};
	
	table.appendChild(tbody);
	document.body.appendChild(table);
	
};
Ответить с цитированием
  #2 (permalink)  
Старый 09.05.2012, 11:36
Профессор
Отправить личное сообщение для zebra Посмотреть профиль Найти все сообщения от zebra
 
Регистрация: 14.09.2011
Сообщений: 523

Прочтите
Ответить с цитированием
  #3 (permalink)  
Старый 09.05.2012, 11:45
Новичок на форуме
Отправить личное сообщение для LizzarD Посмотреть профиль Найти все сообщения от LizzarD
 
Регистрация: 09.05.2012
Сообщений: 6

ищу, как исправить оишбку

Последний раз редактировалось LizzarD, 09.05.2012 в 11:56.
Ответить с цитированием
  #4 (permalink)  
Старый 09.05.2012, 13:07
z4p z4p вне форума
Новичок на форуме
Отправить личное сообщение для z4p Посмотреть профиль Найти все сообщения от z4p
 
Регистрация: 08.05.2012
Сообщений: 4

Кури сюда:
Доступность имен полей функций
this не относится к прототипу функции, this относится к контексту вызова.

Вроде бы
this.createTable(this.nowM,this.nowY)
при событии td.onclick сработает как:
td.createTable(td.nowM,td.nowY)

что несомненно вызовет ошибку
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вызов функции родителя из iFrame bushstas Общие вопросы Javascript 6 13.08.2013 14:43
Двойной вызов функции Tmin10 jQuery 8 08.12.2011 15:19
вызов функции при смене url vvsh Events/DOM/Window 4 11.08.2011 19:01
Вызов функции, находящейся в другой функции ZneP Events/DOM/Window 6 24.08.2010 18:45
Вызов функции из другой функции.. ?? glutton Общие вопросы Javascript 3 21.08.2009 22:33