[RESOLVIDO]Esconder DIVs

4 respostas
R

Galera, tô com uma dúvida sobre como eu escondo e mostro o conteúdo de todas as DIVs num clique de um botão. Eu tô fazendo assim

<head>
<script language="javascript"> 
function hideAll(){
	var clas = document.getElementsByTagName("div");
	 if(clas.className == "algo"){
	  clas.style.display = "none";
}
</script>
</head>

<body>

<c:if test="${!empty showOccurrence}">

	<p align = "center"> 
	<b><c:out value="${showOccurrence}" > </c:out></b>
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	
	<input type="button" value="Expandir" id="expand" onclick="showAll()"/>
	<input type="button" value="Contrair" id="contract" onclick="hideAll()"/>
	<input type="button" value="Gerar PDF" id="generatePdf" onclick=""/>
	</p>
	<br />


	<c:forEach var="currrentEquipment" items="${list}">
        <a href="javascript:showHide('${currrentEquipment.name}')"> <c:out value="${currrentEquipment.sectionTitle}"></c:out> </a>
		<div class="algo" id='${currrentEquipment.name}' style="display: none;">	 
		<br />
		<c:out value='${currrentEquipment.information}' /> <br />
		</div>
		<br />     
	</c:forEach>

</c:if>

</body>

Mas não funciona, não faz nada... e aí? Alguma dica?

4 Respostas

P

para exibir ou esconder você deve usar o style.visibility.
Ex:

<script  language="javascript">
<!--
    function exibir( obj ){
        obj.style.visibility = "visible";
    }

    function esconder( obj ){
        obj.style.visibility = "hidden";
    }

    e = document.getElementById( "id" );
    exibir( e );
//-->
R

desse jeito so funciona pra um cara… eu queria pra todos… qual id eu tenho q pegar pra englobar todos os divs?

rodrigoK

Ele pode usar o display também, o visibility esconde sem tirar a posição do elemento na página (fica um espaço em branco) o display já faz parecer que o elemento de fato não existe pois nem o espaço que ele ocupa fica visível.

O problema que vi, é que os DIVS são montados dentro de um forEach e no JS não tem um FOR pra esconder todos, o JS não faz o FOR sozinho quando tem mais de um elemento com o mesmo nome.

Tenta assim:

function hideAll(){  
var clas = document.getElementsByTagName("div");  

if (clas.length != null) {
    for (i = 0; i &lt; clas.length; i++) {    
        if(clas[i].className == "algo"){  
            clas[i].style.display = "none";  
        }
    }
} else if(clas.className == "algo"){  
    clas.style.display = "none";  
}

O if antes do FOR é porque se só tiver um DIV o JS não vai reconhecer como array e não vai passar no FOR.

Abraços,

R

FUNFOU!!! VLW CARA

Criado 15 de setembro de 2008
Ultima resposta 15 de set. de 2008
Respostas 4
Participantes 3