Показать сообщение отдельно
  #1 (permalink)  
Старый 13.11.2009, 01:28
Новичок на форуме
Отправить личное сообщение для Shahurik Посмотреть профиль Найти все сообщения от Shahurik
 
Регистрация: 12.11.2009
Сообщений: 2

Как внутри класса вызвать метод из соседнего метода
Доброй ночи.
Проблема: есть класс для изменения прозрачности объекта. Методы: set — установить прозрачность объекта, fade — плавно изменить прозрачность. fade должна вызывает в интервале функцию set. Сначала попробовал вызвать через this.set, однако выдается ошибка «this.set is not a function». Потом определил this в this.self и this.set в this.self.set. Та же ошибка: «this.self.set is not a function»

var opaque=function(elem){
		this.elem=elem;
		this.set=function(opacity){
			this.elem.style.filter=(opacity==1)?"":"alpha(opacity="+opacity*100+")";
			this.elem.style.opacity=opacity;
		};
        this.self=this;//переопределение this
		this.self.set=this.set;
		this.fade=function(from,to,speed){
			opacity=from;
			step=(to>from)?.01:-0.01;
			run=setInterval(function(){
				opacity+=step;
				this.self.set(opacity);//проблемное место
				if(opacity==to){clearInterval(run);}},
				speed   
            );
		};
};
<div id="block">Привет!</div>
<a href="#" id="link">Плавно убрать</a>
<script type="text/javascript">
	var f=new opaque(document.getElementById("block"))
	document.getElementById("link").onclick=function(){f.fade(1,0,1);}
</script>


Подскажите пожалуйста, что неправильно?
Заранее спасибо :–)
Ответить с цитированием