Ir para conteúdo

POWERED BY:

Arquivado

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

Giovani Campêlo

sobre setTimeout

Recommended Posts

Amigos,

 

Tenho um botão que quando eu passo o mouse em cima ele exibe um div e quando eu o retiro ele executa um setTimeout para oculta-lo novamente. só que se o usuário passar o mouse do botão para o div eu quero que o div cancele o setTimeout e continui exibido até que o usuário retire o mouse de cima dele também.

 

O problema é que quando o usuário passa o mouse rapidamente do botão para o div ele não está desligando o setTimeout e oculta o div de qualquer maneira, se o usuário retirar o mouse do botão e demorar um pouco para coloca-lo em cima do div ele funciona beleza.

 

Este é o código que estou usando:

 

var menuaux = '';var tempo=0;function mostraMenu(nm_menu, exibir, distancia_left){if ((menuaux != nm_menu) && (menuaux!='')){ocultaMenu(menuaux);}ResetTimeout(); if (exibir){posicionaMenu(nm_menu, distancia_left);document.getElementById('dv_'+nm_menu).style.display = '';}else if (!exibir){tempo = setTimeout("ocultaMenu('"+nm_menu+"');", 500);}menuaux = nm_menu;}function posicionaMenu(nm_menu, distancia_left){document.getElementById('dv_'+nm_menu).style.left=(document.getElementById('menu_left').offsetLeft+distancia_left);}function ocultaMenu(nm_menu){document.getElementById('dv_'+nm_menu).style.display = 'none';ResetTimeout();}function ResetTimeout() {clearTimeout(tempo);tempo = null;}function verificaOcultar(){if (menuaux != '')ocultaMenu(menuaux);}
e no botão estou usando:

 

<input type="button" onClick="javascript:mostraMenu('asecretaria',true, 118)"onMouseOver="javascript:mostraMenu('asecretaria',true, 118)"onMouseOut="javascript:mostraMenu('asecretaria',false, 0)">

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aqui não rodou nem no IE e nem no FF! Veja o erro:

Erro: document.getElementById("dv_" + nm_menu) has no propertiesArquivo-fonte: file:///C:/Documents%20and%20Settings/Adriano/Desktop/Untitled-1.htmLinha: 30

Tem na web para analisarmos... :o
<div id="dv_asecretaria" style="position:absolute; left:241px; top:82px; width:158px; height:156px; z-index:1;display:none;">  <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="158" height="156">	<param name="movie" value="flash/Menu_asecretaria.swf">	<param name=quality value=high>	<embed src="flash/Menu_asecretaria.swf" quality=high pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="177" height="155"></embed>  </object></div><div id="dv_agendacultural" style="position:absolute; left:218px; top:138px; width:210px; height:59px; z-index:1; display:none;">  <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="172" height="117">	<param name="movie" value="flash/Menu_agendaCultural.swf">	<param name=quality value=high>	<embed src="flash/Menu_agendaCultural.swf" quality=high pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="210" height="114"></embed>  </object></div>
O código que estava faltando são estes divs.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A URL é a seguinte:

http://www.secult.ce.gov.br/teste1/menu.asp

 

coloque o mouse em cima de "A secretaria" e quando aparecer o menu passe o mouse rapidamente para o menu e você verá que ele vai sumir. Caso você passe o mouse por entre os botões ele permanecerá na tela.

 

OBS: todos os chama a mesma função javascript.

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.