Vamos la
O q eu quero é o seguinte eu tenho uma lista de departamentos, ai qdo o cara passa o mouse em cima do nome desse departamento abre-se em baixo um lista com cada marca referente aquele departamento. Bem isso esta funcionando, porem este processo de abrir estava mto rapido, queria q fosse mais assim, colocou o mouse em cima do nome do departamente e depois de uns 2 segundos abrisse as opcoes.
Pesquisando vi q tinha q ser utilizado um funcao JavaScript, a setTimeOut(); que é responsavel por setar um tempo para que a outra funcao JavaScript aconteca...bom ai seguindo o q um cara me passou eu fiz este controle, porem agora nao esta mais abrindo as opcoes de marca....vou postar meu codigo para vcs verem como tudo é feito:
Primeiro o CSS:
#menu_categoria ul {
margin: 0;
padding: 0;
list-style: none;
width: 185px;
}
#menu_categoria ul li {
position: relative;
}
#menu_categoria li ul {
position: relative;
left: 5px;
display: none;
padding:1px;
}
#menu_categoria ul li a{
display: block;
text-decoration: none;
color: #777;
background: #fff;
padding:4px;
}
#menu_categoria ul {
margin: 0;
padding: 0;
list-style: none;
width: 185px;
/*border-bottom: 1px solid #ccc;*/
}
#menu_categoria .itemOver li:hover ul, li.over ul { display: block; }
Eu fiz este CSS baseado em uma explicacao de um tutorial do Maujor, a unica coisa q tive que alterar foi esta ultima linha onde criei este itemOver para que controlasse o mostrar as opcoes por JavaScript
Bom agora vem o JavaScript:
<script language="JavaScript">
function mouse_over_menu(objDiv)
{
window.setTimeout(open_menu, 1500, objDiv );
}
function open_menu(objDiv)
{
objDiv.className = 'itemOver';
}
</script>
Reparem que na funcao open_menu() eu chamo o itemOver....e na funcao mouse_over_menu() eu coloco q esta funcao será executada a cada 1500 milesegundos....esta foi a funcao q um amigo fez dizendo q daria certo
Agora a geração do menu, que é feito de modo dinamico com PHP:
<div id="menu_categoria" class="boxed" >
<h2 class="title">Departamentos</h2>
<div style="margin:5px;" onmouseover="CHAMADA DA FUNCAO">
<?
//
$sql = "BUSCO DEPARTAMENTOS ATIVOS";
$req = mysql_query($sql);
//
if (mysql_num_rows($req)) {
?>
<ul class="semMargem" id="nav" >
<?
//
while ($cp = mysql_fetch_array($req)) {
//
$nome = $cp['nome'];
if ($cp['id_produto_categoria'] == $_GET['categoria'])
$nome = '<b>'.$cp['nome'].'</b>';
?>
//ATRAVES DO LI MOSTRO TODOS OS DEPARTAMENTOS
<li ><a class="categoria" href="?l=produto&categoria=<?=$cp['id_produto_categoria'] ?>" title="<?=$cp['nome'] ?>" ><?=$nome ?></a></li>
<?
//
if ($cp['id_produto_categoria'] OR $_GET['categoria']) {
//
echo '<ul style="margin-bottom:5px;" >';
$sql = "BUSCO TODAS AS MARCAS REFERENTES AOS DEPARTAMENTOS ";
$req2 = mysql_query($sql);
//
while ($cp2 = mysql_fetch_array($req2)) {
//
$nome = $cp2['nome'];
if ($cp2['id_produto_marca'] == $_GET['marca'])
$nome = '<b>'.$cp2['nome'].'</b>';
?>
//MOSTRO AS MARCAS QUE CADA DEPARTAMENTO POSSUI....AQUI ACONTECE A MAGICA OU SEJA QDO O CARA PARA O MOUSE EM CIMA DE UM DEPARTAMENTO ESTA LINHA QUE SERÁ MOSTRADA
<li ><a class="marca" style="color:#06C;" href="?l=produto&categoria=<?=$cp['id_produto_categoria'] ?>&marca=<?=$cp2['id_produto_marca'] ?>" title="<?=$cp2['nome'] ?>" ><?=$nome ?></a></li>
<?
}
echo '</ul>';
}
?>
<? } ?>
</ul>
Como podem ver na DIV eu chamo a funcao....agora vem o problema:
-Se eu chamo:
<div style="margin:5px;" onmouseover="open_menu(this);">Blz passo o mouse sobre o nome do departamento, e aparece as marcas relacionadas a ele....porem claro nao é setado o tempo para chamar a funcao
-Mas se eu chamo:
<div style="margin:5px;" onmouseover="mouse_over_menu(this);">OU seja chamei a funcao que chama a outra e determina um tempo para que seja executada...NAO FUNCIONA...ele simplesmente deixa de abrir as opcoes de cada departamento....entao pra mim que nao sei nada de JS mostra q o erro deve estar nessa funcao, mas nao sei o q pode ser
Alguem sabe me ajudar???? Queria mto conseguir fazer isso
Detalhe qdo eu passo o mouse em cima do departamento, aparece uns erros na barra de status do IE e ao ver o que esta la é: 'undefined' é nulo e nao é um objeto
POR FAVOR ALGUEM ME AJUDA










