Jump to content


Photo

Mostrar/esconder Div


  • Faça o login para participar
12 replies to this topic

#1 blecko

blecko

    Normal

  • Usuários
  • 81 posts
  • Sexo:Não informado

Posted 22/01/2007, 21:03

Olá,

estou enfrentando um problema sério e não faço idéia de como resolver. Tenho um site em php que executa um javascript nele. Acontece que no Firefox ele executa normalmente, mas no IE ele não executa. Só executa quando eu faço a página em HTML.

O código javascript em questão é o código do Show/Hide do DreamWeaver.

Segue abaixo o js do show/hide (lembrando que ele está dentro de um print ""):
<script language=\"JavaScript\" type=\"text/JavaScript\">
<!--
function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName==\"Netscape\")&&(parseInt(appVersion)==4)) {
	document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf(\"?\"))>0&&parent.frames.length) {
	d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_showHideLayers() { //v6.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
	if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
	obj.visibility=v; }
}
//-->
</script>


Abaixo o código do DIV que deve abrir:
<div id='divdesc' style='position:absolute; width:300px; left:25%; top:".$pos." z-index:1; background-color: #444444; layer-background-color: #444444; border: 5px; border-color: #000000; visibility: hidden;'>
			<div style='width:300px' align='right'><b><font size='2'><a href='#' onClick=\"MM_showHideLayers('divdesc','','hide')\">Fechar [X]</a></font></b></div>
			<div style='width:300px' align='justify'>".$row['descricao']."</div>
		</div>


E finalmente, o link pelo qual eu chamo o script:
<div class='fonte' align='center'><b><a href='#' onClick=\"MM_showHideLayers('divdesc','','show')\">Descrição</a></b></div>


A variável $row['descricao'] que eu estou usando é para chamar no banco de dados mysql a descrição desse download, que deverá abrir numa div que está atualmente como hidden.

A questão é, no Firefox esse código funciona perfeitamente, no Internet Explorer 6.0 quando eu clico no link não acontece nada. Lembrando que no IE 6.0 só funciona quando eu executo a página em HTML. Tenho a impressão de que é algo relacionado às aspas.

Bom, fico no aguardo.

ps: postei na área javascript pois, primeiramente, achei que fosse um problema de JS, mas acho que vocês do PHP poderão em ajudar também.

Obrigado e grande abraço!

Edição feita por: blecko, 22/01/2007, 21:04.

blecko ~ GunzArsenal.Com

Venda de espaço publicitário no www.GunzArsenal.com na forma de Banners e troca de links, tenho pagerank 4.

Clique aqui para ver mais informações e os formatos de anúncio no Gunz Arsenal


#2 Felipe Pena

Felipe Pena

    O temor do Senhor é o princípio da sabedoria

  • Ex-Admins
  • 6441 posts
  • Sexo:Masculino

Posted 23/01/2007, 11:41

Dica: Para usar o código JavaScript não precisa usar PHP.
Felipe Pena
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29

#3 Dudu

Dudu

    Viva la vida

  • Usuários
  • 1437 posts
  • Sexo:Masculino
  • Localidade:Uberlândia - MG
  • Interesses:PHP

Posted 23/01/2007, 12:51

Olá, tudo bem?

<script>
function div(div) {
var objeto = document.getElementById(""+div+"");
if(objeto.style.display == 'none') {
objeto.style.display = 'block';
} else {
objeto.style.display = 'none';
}
}
</script>


<input type="button" name="ok" value="OK" onClick="java script:div('<?php echo $id; ?>');">

<div id="<?php echo $id; ?>" style="display: none" align="left">
teste
</div>


Até mais ^_^

Fórum WMO - Equipe de Desenvolvimento / Banco de Dados - Moderador


Twitter: HostCheap


#4 hostdesigner

hostdesigner

    Super Veterano

  • Usuários
  • 2910 posts
  • Sexo:Masculino
  • Localidade:Quirinópolis-GO
  • Interesses:Programação, Mulheres, Diversão, Mulheres, Música, Mulheres, Meu Carro, Mais mulheres, Internet, Outras Mulheres, Quase por último PAZ e por ultimo Outras Váááárias Mulheres...

Posted 23/01/2007, 14:42

Complementando o que o ECLESIASTES e o DUDU disseram:

Você não precisa colocar o JS dentro de uma função php para que o JS seja executado apenas adicione o JS em sua página e quando precisar executar a função JS apenas chame-a normalmente

No teu caso você poderia fazer assim só um exemplo básico
<HTML>
<TITLE>PHP + JS</TITLE>
<BODY>
<script>
function minhaFuncao(){
alert("Clicado e executado :)");
}
</SCRIPT>

<div onclick="minhaFuncao();">Teste 1</div>
<div onclick="minhaFuncao();">Teste 2</div>
<div onclick="minhaFuncao();">Teste 3</div>
<div onclick="minhaFuncao();">Teste 4</div>

</BODY>
</HTML>
Note a parte que está escrito "Teste X" esta parte foi através do PHP com uma função assim como esta
<?PHP 
for($i = 0; $i >= 4; $i++){
echo "<div onclick="minhaFuncao();">Teste ". $i ."</div>";
}
?>

Note que o PHP apenas imprime o HTML com a chamada para a função JS sem ter necessidade de imprimir a função JS diversas vezes

Falopa!

Edição feita por: hostdesigner, 23/01/2007, 14:43.


#5 blecko

blecko

    Normal

  • Usuários
  • 81 posts
  • Sexo:Não informado

Posted 23/01/2007, 20:12

Resolvi o problema. É como já me falaram, o Firefox interpreta os códigos de uma maneira, o IE de outra.

No meu caso o erro estava na forma como eu chamava o link, estava assim href='#', mas o correto é href=\"#\". Dessa forma funciona tanto no firefox como no IE.

Então fica assim (integrado no PHP, claro):
<a href=\"#\" onClick=\"mostra('divdesc')\">Descrição</a>

O javascript eu mudei, estou usando o código postado pelo fiote: http://forum.wmonlin...howtopic=169475


Muito obrigado à todos vocês pela ajuda. :D
blecko ~ GunzArsenal.Com

Venda de espaço publicitário no www.GunzArsenal.com na forma de Banners e troca de links, tenho pagerank 4.

Clique aqui para ver mais informações e os formatos de anúncio no Gunz Arsenal


#6 fiote

fiote

    12 Horas

  • Usuários
  • 191 posts
  • Sexo:Masculino
  • Localidade:Vila Velha - ES
  • Interesses:PHP

Posted 23/01/2007, 21:01

Heheh

fiote rox =)

mas tipo, eu 'aprendi' JS quebrando a cabeça analisando os códigos do dreamweaver...

recomendo o mesmo pra vc =)
[ FFTOnline.Net ]
Developed by Fiote, Powered by Mootools.

#7 cacamaua

cacamaua

    Novato no fórum

  • Usuários
  • 6 posts
  • Sexo:Não informado

Posted 27/09/2007, 20:42

O que o DW faz em 10 linhas vc faz estourando em 5 se fizer na mão :P

#8 Profano

Profano

    Novato no fórum

  • Usuários
  • 1 posts
  • Sexo:Não informado

Posted 29/09/2007, 20:04

Tanta complicação para algo tão simples...

onclick="if (this.style.display == 'none'){ this.style.display = 'block';} else{ this.style.display = 'none';}

aplica isto no div que queres esconder

podes também criar uma função para simplificar as coisas

<script>
function esconder_div (idiv){
var obj = document.getElementById(idiv);
if (obj .style.display == 'none'){ obj .style.display = 'block';} else{ obj .style.display = 'none';}
}
</script>

chamas a função com onclick="esconder_div(this.id)"

abraço

#9 vagner oliveira

vagner oliveira

    Novato no fórum

  • Usuários
  • 3 posts
  • Sexo:Masculino
  • Localidade:RS - BRASIL

Posted 05/01/2008, 14:37

olá eu estou escondendo div assim bm simples

<a href="index.php?t=empresa/empresa.php"
onclick="document.getElementById('banner').style.display='none'">Not
ícias</a>

Quando vc clica no link o div até é escondido.. mas a pagina índex.php é
recarregada.... e o div deve aparecer novamente.


se alguem poder me ajudar com dicas ou alguma função js que resolva o problema agradeço!!

Eu estou pensando em Usar Ajax para resolver esse problema mas
1º nao sei usar
2º pode ter alguma função js que resolva o problema !!!!

#10 Bruno Augusto

Bruno Augusto

    ∙•● Restarting... ●•∙

  • Usuários
  • 1968 posts
  • Sexo:Não informado
  • Localidade:Itajubá

Posted 05/01/2008, 16:27

Resolvi o problema. É como já me falaram, o Firefox interpreta os códigos de uma maneira, o IE de outra.

No meu caso o erro estava na forma como eu chamava o link, estava assim href='#', mas o correto é href=\"#\". Dessa forma funciona tanto no firefox como no IE.

Então fica assim (integrado no PHP, claro):

<a href=\"#\" onClick=\"mostra('divdesc')\">Descrição</a>

O javascript eu mudei, estou usando o código postado pelo fiote: http://forum.wmonlin...howtopic=169475


Muito obrigado à todos vocês pela ajuda. :D

Não é bem assim. Acontece que no PHP, um print iniciando com aspas duplas só pode conter utras delas no final, para fechar OU se fores escapadas pela barr invertida (\).

Uma dica, se você gosta dos seus prints começando com aspas duplas, mas sabe que o que vai ser impresso é um HTML que requer algum valor envolto em aspas, para os valores do HTML utilize aspas simples. Assim:

print "Teste de <a href='http://www.gogle.com.br'>link para o Google</a>";
Mas tome cuidado entre aspas simples e duplas pois a dupl interpreta variáveis as simples não.

Não vou me estender pois esta sala não á para discutir PHP.

#11 bimonti

bimonti

    Super Veterano

  • Usuários
  • 2654 posts
  • Sexo:Masculino

Posted 06/01/2008, 12:27

Que confusão vocês fizeram neste tópico. O vagner postou a mesma pergunta em outro tópico, e o Bruno deu um quote em um post de 1 ano atrás... ^^

@Vagner
Não poste várias vezes a mesma pergunta. Escolha o fórum mais adequado e poste somente uma vez, depois aguarde a resposta. Se alguém souber você terá a sua resposta.
WebFórum - Equipe de Desenvolvimento - Monitor
Posted Image
Yeah I do have some stories, and it's true I want all the glory ...

#12 Frederic

Frederic

    Novato no fórum

  • Usuários
  • 2 posts
  • Sexo:Não informado

Posted 09/07/2008, 17:42

como posso criar um efeito fade quando eu clicar para mostra e esconder a minha div?

#13 bimonti

bimonti

    Super Veterano

  • Usuários
  • 2654 posts
  • Sexo:Masculino

Posted 10/07/2008, 10:11

http://forum.wmonlin...howtopic=195876
WebFórum - Equipe de Desenvolvimento - Monitor
Posted Image
Yeah I do have some stories, and it's true I want all the glory ...




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq