JS проблем

I_V_O

Registered
Здравейте! Защо когато дефинирам функция1 в друга функция2 и сложа setTimeout за функция1 не иска да ми я извика отново? Ето примерен код: Код:
Код:
window.createScuolaIcon = function(id){ 
    
   var Scuola = document.getElementById(id); 
    
   if(!Scuola) return; 
    
   Scuola.mouseAnimation = function(){ 
       
      if(this.top < 100){ 

         this.setTopPosition(this.newTopPosition); 
          
          
         this.timer = setTimeout("Scuola.mouseAnimation()", 10); 
          
      } else{ 
          
         window.clearTimeout(this.timer); 
          
      } 
       
   } 
Scuola.onmouseover = function(){Scuola.mouseAnimation();} 
}
 
Защото
Код:
var Scuola = document.getElementById(id);
при next Internal call e undefined, съответно и Scuola.xxx==NULL

пп: гледай error console
 
А как ще стане тогава тоест да извиква същата функция след определен интервал от време?
 
Дори да я извикам с this отново нищо не става, а аргументи по подразбиране не мога да задам, защото целта на функцията е да добавя ефект към произволен елмент, а не към предварително избрани такива...
 
Код:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<title>Школи</title>
		
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
		
		
		
		<script type="text/javascript">
		window.createScuolaIcon = function(id){
	
	-----------
 
Опитай това:
Код:
   Scuola.mouseAnimation = function(xx){
	x = (typeof(xx) != 'undefined') ? xx : this;

      if(x.percentage < 100){
         
         x.percentage += Math.ceil((100 - x.percentage)/8);
         
         x.setTopPosition((x.percentage/100)*x.newTopPosition);
         x.setOpacity((x.percentage/100)*x.newOpacity);
         
         x.timer = setTimeout("x.mouseAnimation(x)", 10);
         
      } else{
         
         x.setTopPosition(x.newTopPosition);
         x.setOpacity(x.newOpacity);
         x.percentage = 0;
         window.clearTimeout(x.timer);
         
      }
      
   }
 
Всъщоност дори и този метод се прецаква ако го използвам за повече от 1 обект....

Все пак начин имало:

Код:
this.timer = setTimeout(function(){Scuola.mouseAnimation();}, 10);

:)
 

Back
Горе