从javascript和代码隐藏中访问<div>

Dav*_*het 3 javascript c# asp.net

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

function JSAdd() {
    document.getElementById('divDetail').style.display = "block";
}
    <div style="float:left">

    <div id="ctl00_MainContent_upnlLbRD">





            <select size="4" name="ctl00$MainContent$lbRD" id="ctl00_MainContent_lbRD" style="width:188px;">

    <option value="5">one</option>
    <option value="1">two</option>
</select>
Run Code Online (Sandbox Code Playgroud)

    <input id="btnAdd" type="button" value="????????" onclick="JSAdd();" />
    <input id="btnEdit" type="button" value="?????????????" onclick="JSEdit();" />
</div>
<div id="ctl00_MainContent_divDetail" style="display:none" clientidmode="static">
    <div id="ctl00_MainContent_upnlDescription">

            <div>

                <span id="ctl00_MainContent_lblDescription">????????:</span>

                <input name="ctl00$MainContent$txtDescription" type="text" id="ctl00_MainContent_txtDescription" />  

                <span id="ctl00_MainContent_txtDescriptionRequiredFieldValidator" style="color:Red;visibility:hidden;">???????? ???????? ???????????? ??? ??????????</span>

            </div>

            <input type="submit" name="ctl00$MainContent$btnSave" value="?????????" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;ctl00$MainContent$btnSave&quot;, &quot;&quot;, true, &quot;&quot;, &quot;&quot;, false, false))" id="ctl00_MainContent_btnSave" />   
Run Code Online (Sandbox Code Playgroud)

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

谢谢,
大卫

Jam*_*son 9

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

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

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

div1.Style["display"] = "block"; //visible
Run Code Online (Sandbox Code Playgroud)

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

编辑

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