Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde!
Eu não tenho conhecimentos em javascript, mas resolvi me aventurar um pouco e estou há 3 horas tentando fazer uma coisa que acho ser simples mas não consigo fazer funcionar corretamente. E enquanto pesquisava encontrei muitas informações úteis neste fórum e por isso vim pedir ajuda para vocês.
O meu problema é o seguinte: eu quero fazer com que, ao clicar em um dos ítens de um menu, a div que está aparecendo iria sumir e apareceria a div com o outro conteúdo. Eu até consegui fazer isso, mas a div só desaparecia da primeira vez(quando eu clicava no primeiro link o conteúdo desaparecia e aparecia o outro, mas quando eu clicava em outro link o conteúdo ficava em cima da outro).
A lógica que eu tentei usar foi: Quando clicar em um link ele vai deixar o conteúdo de uma div que engloba todas as outras invisível e depois vai deixar a div que eu quero visível. Eu cheguei ao código abaixo, que "funcionava" até uma hora atrás(agora ele só tá deixando o conteúdo invisível)(talvez o código que funcionava não seja exatamente esse, mas algo muito parecido):
<script language="javascript">
function hide(){
document.getElementById('dados').style.visibility = 'hidden';
}
function show(div_s){
document.getElementById(div_s).style.visibility = 'visible';
}
</script>
<div id="dados">
<div id="t1">
Texto 1
</div>
<div id="t2">
Texto 2
</div>
<div id="t3">
Texto 3
</div>
</div>
<ul>
<li><a href="#" onclick="hide(); show('t1')">Mostrar T1</a></li>
<li><a href="#" onclick="hide(); show('t2')">Mostrar T2</a></li>
<li><a href="#" onclick="hide(); show('t3')">Mostrar T3</a></li>
</ul>
Alguém sabe como me ajudar? E desde já obrigado.
Muito obrigado William, resolveu meu problema, você em 10 minutos conseguiu fazer funcionar uma coisa que eu não consegui em mais de 3 horas.
O comando funcionou direitinho mas a div que apareceria inicialmente começava invisível, então eu coloquei o comando onload="show('dicasdeseguranca')" na tag body e resolveu o problema. Eu também substitui de visibility para display.
Mais uma vez, obrigado William.
uma boa prática, para não misturar js com html..
é chamar no js tb:
window.onload = function() { hide_all();//começa com todas escondidas show('dicasdeseguranca'); }ai você não precisa fazer:<body onload="show('dicasdeseguranca');">ai a tag body, pode ficar:
<body>
/applications/core/interface/imageproxy/imageproxy.php?img=http://forum.imasters.com.br/public/style_emoticons/default/happy.gif&key=d39e68bd94edabd9069b8f4a6d941163110d4d36d12e6324ad75ec83de4843df" alt="Imagem Postada" />Mais uma vez obrigado William, fiz isso e funcionou.
Achei interessante o uso do apelido para document.getElementById() e a chamada do window.onload dentro do js, deixa o body limpo /applications/core/interface/imageproxy/imageproxy.php?img=http://forum.imasters.com.br/public/style_emoticons/default/smile.gif&key=15294d64c22e9e9c4ae0bf82a62ec27d13f27d6ba7078a5f7982077798029364" alt="Imagem Postada" />
dei uma modificada, tenta estudar:
Por isso o teu não funcionava:
Se você tentar mostrar um elemento dentro de um container que tá escondido, não tem como ver mesmo /applications/core/interface/imageproxy/imageproxy.php?img=http://forum.imasters.com.br/public/style_emoticons/default/happy.gif&key=d39e68bd94edabd9069b8f4a6d941163110d4d36d12e6324ad75ec83de4843df" alt="Imagem Postada" />
Se não quiser que ocupem espaço, prefira a propriedade css display: none|block;