Доброй ночи.
Проблема: есть класс для изменения прозрачности объекта. Методы: 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>
Подскажите пожалуйста, что неправильно?
Заранее спасибо :–)