Показать сообщение отдельно
  #2 (permalink)  
Старый 17.04.2011, 22:58
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

leoHex,
когда setTimeout сработает this будет = window а не fade.
Используйте замыкание или arguments.callee
<div id="test">test</div>
<script type="text/javascript">
var Tfade=function(){};
Tfade.prototype.fadeIn=function() {
document.getElementById('test').childNodes[0].data +=1;
var a = this;
setTimeout(function () { return function(b){b.fadeIn()}(a)}, 500);
 }
var fade=new Tfade();
fade.fadeIn();
</script>


<div id="test">test</div>
<script language="JavaScript" type="text/javascript">
var Tfade=function(){}
Tfade.prototype.fadeIn=function() {
document.getElementById('test').childNodes[0].data +=1;
setTimeout( arguments.callee, 500);
 }
var fade=new Tfade();
fade.fadeIn();
</script>
Ответить с цитированием