在客户端点击隐藏div

试图让这个div消失,似乎没有做我期望它做的事情,我哪里出错了?

它不会消失。

使用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; }  

HTML:

 
Check availability

我希望按钮能够隐藏自己。

将您的行更改为:

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

原因是当在客户端呈现checkAvailability控件时,它可能具有或不具有相同的id(checkAvailability),因为asp.net将其id添加到容器控件或其他逻辑的id之前。

<%=checkAvailability.ClientID%>将始终为您提供客户端的实际ID。

我想你最好在这里查看一些jQuery 。 例如,您的代码可能如下所示:

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

当然,在您的情况下,如果您出于某种原因需要,也可以隐藏包装div。 这是一样的方法。

除了@Icarus发布的内容之外,请修改您的代码。

 OnClientClick="return Show_Hide_Display()" 

这将阻止post发生。 我猜你不希望发生回发,因为你的div /按钮会在回发后显示。

问题是linkbutton导致回发,因此由JS设置的div可见性,在回发后将恢复到它的默认值。 即style.display将不会被保存。 一个简单的解决方案就是添加简单的html按钮。 像这样

  

这只是触发JS,而不是导致回发,你的div可见性将按预期改变。