Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Clear

[Resolvido] Problema com setTimeout e clearTimeout

Recommended Posts

Um problema ocorreu no script que estou fazendo.. (que inclusive tive excelentes dicas do Bruno aqui do fórum)

 

tudo funciona perfeitamente....

 

Porém resolvi colocar um setTimeout() para ele fechar a div "geral" que eu abri com slideDown.

(já tentei doTimeout() e delay() tbm sem sucesso)

 

Ou seja, depois de alguns segundos ela fecharia....E de fato funcionou.

 

Porém, ao clicar em outros links do mapa, esse maluco a cada clique inicia um novo setTimeout, sem cancelar o que já existe... então a div vai ficando louca de tanto abrir e fechar....rssss

 

Eu acabao de clicar em um link e ela abre, e eimediatamente fecha pq pegou o tempo de um setTimeout antigo...rsss

 

tentei colocar um clearTimeout apontando pra uma var onde coloquei o setTimeout... mas não funcionou....

 

Alguma dica?

 

Abração

 

 

ATUALIZANDO O CÓDIGO:

 

JS

<script type="text/javascript">  
function id( el ){  
       return document.getElementById( el );  
}  
function hide_all(){  
       var divs = id('geral').getElementsByTagName('preview');  
       for( var i=0; i<divs.length; i++ )  
       {  
              	if( divs[i].className=='preview' ) {
                   divs[i].style.display = 'none'; }
       }  
} 

/* http://www.javascriptkit.com/jsref/event.shtml */  
function disablelink( e ){  
       var evt = window.event || e  
       if (evt.preventDefault) //supports preventDefault?  
               evt.preventDefault()  
       else //IE browser  
               return false  
}  
window.onload = function(){  
       hide_all();
       var as = id('mapeando').getElementsByTagName('area');  
       for( var i=0; i<as.length; i++ )  
       {  
               as[i].onclick = function( e ){  
                       hide_all();
		var id_el = this.href.split('#')  

                       id( id_el[1] ).style.display = 'block'; 
		$('div#geral').slideDown(); 

		if (typeof(fecha) != 'undefined') {

		    clearTimeout( fecha );
                       }

		var fecha = setTimeout( function( e ){
	            $("div#geral").slideUp('slow');
                           return disablelink( e ); 
                       }, 10000 );

                       return disablelink( e );  
               }  
       }  
}  
</script>

 

 

MINHAS DIVs

<div id="geral">

   foreach ($array_pts as $key => $value) {

   <div id="'.$value['ponto_id'].'" class="preview">
       conteudo
   </div>

   }

</div>


 

 

MEU "MAP" DE CHAMADA

<div id="mapeando">';
                   $i =0;
                   foreach ($array_pts as $key => $value){
                   $i++;

                   <map id="mapa'.$i.'">     
                       <area shape="circle" coords="5,5,10" href="#'.$value['ponto_id'].'" border="0">
                       <img src="ponto_imagem.jpg" border="0" usemap="#mapa'.$i.'" style="position:absolute; top:'.$value['pontos_mapa_coord_y'].'px;left:'.$value['pontos_mapa_coord_x'].'px; width:10px; height:10px;" />
                   </map>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Atualizando..

 

Consegui o resultado que queria com dotimeout() .

 

$.doTimeout( 'div#geral' ); //Cancela o do timeout anterior

$.doTimeout( 'div#geral', 180000, function( e ){ //seta um novo dotimeout
 $("div#geral").slideUp('slow');
 return disablelink( e ); 
});

 

:D

 

Resolvido^^

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.