Masquer div sur client clic

Essayer de faire disparaître cette division, ne semble pas faire ce que je m'attends à ce qu'il fasse, où est-ce que je vais mal?

Il ne disparaît pas.

Javascript:

<script type="text/javascript"> function Show_Hide_Display() { var div1 = document.getElementById("checkAvailability"); if (div1.style.display == "" || div1.style.display == "block") { div1.style.display = "none"; } else { div1.style.display = "block"; } return false; } </script> 

HTML:

 <div runat="server" id="checkAvailability"> <asp:LinkButton OnClientClick="Show_Hide_Display()" ID="lbtnCheckAvailability" runat="server" CausesValidation="true" OnClick="lbtnCheckAvailability_Click">Check availability </asp:LinkButton> </div> 

Je veux que le bouton se cache à fond.

Changez votre ligne pour:

 var div1 = document.getElementById("<%=checkAvailability.ClientID%>"); 

La raison en est que, lorsque le contrôle CheckShare est rendu côté client, il peut ou non avoir le même identifiant (CheckAvailability) puisque asp.net va préciser son identifiant avec celui du contrôle conteneur ou une autre logique.

Ce <%=checkAvailability.ClientID%> vous donnera toujours l'identifiant réel côté client.

Je pense que vous serez mieux de regarder jQuery ici. Par exemple, votre code pourrait ressembler à:

 $(document).ready(function(){ $('#yourbutton').click(function(){ $(this).toggle(); }); }); 

Bien sûr, dans votre cas, vous pouvez également cacher la div. Enveloppante si vous voulez cela pour une raison quelconque. Il s'agit de la même approche.

En plus de ce que @Icarus a publié, modifiez votre code en tant que tel.

 OnClientClick="return Show_Hide_Display()" 

Cela empêchera une publication de se produire. Je suppose que vous ne voulez pas qu'un postback se produise puisque votre bouton div / sera visible après un retour.

Le problème est le bouton de liaison qui provoque le renvoi, donc la visibilité div, définie par JS, après que le retour sera restauré à sa valeur par défaut. C'est-à-dire que style.display ne sera pas sauvegardé. Une solution simple sera simplement ajouter un simple bouton html. comme ça

 <input type="button" value="hide the div" onclick="Show_Hide_Display()" /> 

Cela déclenche juste JS, ne provoquant pas de retour, et votre visibilité de div varie comme prévu.