从javascript和代码隐藏中访问

我有一个带有style =“display:none”的div。 按下html按钮时div应该可见:

function JSAdd() { document.getElementById('divDetail').style.display = "block"; } 
one two

    
Описание: Описание является обязательным для заполнения

我需要能够从代码隐藏中再次使div不可见。 我不能访问div,除非它是runat="server" 。 但是当我添加runat =“server”时,从上面的javascript函数按下按钮时div不会显示。 你能帮帮我吗?

谢谢,
大卫

您可以通过添加runat="server"属性来访问代码隐藏中的div。 添加此属性确实会改变您在JavaScript中访问元素的方式:

 var el = document.getElementById("<%=div1.ClientID%>"); if (el){ el.style.display = "none"; //hidden } 

有两种方法可以调整代码隐藏的可见性,但由于您在JavaScript中设置display:none ,因此您可能希望在代码隐藏中使用相同的方法:

 div1.Style["display"] = "block"; //visible 

在代码隐藏中,您还可以将Visible属性设置为false,但这是不同的,因为它将阻止元素被渲染。

编辑

如果div仍显示display:none ,则可能在某处影响标记的标记或引用。 仔细检查并确保标记有效。

使用Panel ,它呈现为经典div

  

runat="server"应用于元素时,asp.net通过修改它来确保它具有唯一的ID。 只需向asp.net询问真正的客户端ID:

 function JSAdd() { document.getElementById("<%=div1.ClientID%>").style.display = "block"; } 

或者,你可以告诉asp.net将你的ID添加到你的div:

 

资源:

ClientIdMode =“静态”文档

您有几个选项,使用ClientIDMode="Static"或在运行时使用动态ClientID 。 这两个选项都允许您对对象进行服务器端访问。

动态:

  
//or function JSAdd() { document.getElementById('<%= divDetail.ClientID %>').style.display = "block"; } //to hide from code-beind divDetail.Attributes.Add("style","display:none;");

静态(.NET 4.0 +):

  
//or function JSAdd() { document.getElementById('divDetail').style.display = "block"; }

在ASP.NET中,为了使ID唯一(如果在指定相同ID的情况下加载了多个控件),元素上的ID通常遵循ctl00_container1_container2_controlID类的ctl00_container1_container2_controlID ,这是在调用control.ClientID时返回的内容。

如果你考虑这样一种情况,即服务器端有相同的ID并且你在页面中加载了这两个控件,你可以考虑使用jQuery,使用runat="server" ,只需将ID与结束部分匹配,生活会更容易:

 function JSAdd() { $("div[id$=divDetails]").show(); } 

最简单的技术是使用Javascript / Jquery来改变Div的Display属性。 如果不是,你可以使用以下代码

 

代码背后的代码如下

  protected void displayDiv(object sender, EventArgs e) { div1.Style.Clear(); div1.Style.Add("display", "block"); } protected void hideDiv(object sender, EventArgs e) { div1.Style.Clear(); div1.Style.Add("display", "none"); } 

猜你有你的解决方案