在用户控件中使用getElementById

时间:2010-03-28 16:22:53

标签: asp.net javascript

我有一个usercontrol,当点击一个按钮时会隐藏div。

<asp:LinkButton ID="lnkbtn" OnClientClick="ShowHide(); return false;" runat="server" />  
<div id="popupPage" style="display:none;">
</div>


 function ShowHideGotoPopUp() {
        var ob = document.getElementById("popupPage");
        if (ob.style.display == "none")
            ob.style.display = "block";
        else ob.style.display = "none"

    }

当我在页面上放置超过1个usercontrol时出现问题,所有控件都具有相同id = popupPage的div。

2 个答案:

答案 0 :(得分:0)

你应该重新思考这是如何运作的;对于HTML页面,ID应该是唯一的。

但是,如果您想坚持使用当前的设计,那么这样的事情应该有效......

<asp:LinkButton ID="lnkbtn" OnClientClick="ShowHide(this.nextSibling); return false;" runat="server" />  
<div id="popupPage" style="display:none;">
</div>
 function ShowHideGotoPopUp(ob) {
        if (ob.style.display == "none")
            ob.style.display = "block";
        else ob.style.display = "none"

    }

答案 1 :(得分:0)

由于您的控件在同一页面上出现多次,因此您必须为每个usercontrol实例生成div的唯一ID,然后Matt建议更改您的函数以将div ID作为参数。

考虑将div作为服务器控件运行(将自动生成唯一ID)。然后,您可以在用户控件的Load Event中访问唯一的客户端ID,并以编程方式将其传递给您的函数(通过为您的linkbutton设置'OnClientClick'属性)。即..

protected void Page_Load(object sender, EventArgs e)
{

//get the unique generated ID     
string divID = yourDiv.ClientID;

//pass it on to your function by setting OnClientClick

yourLinkButton.OnClientClick = "ShowHideGotoPopUp('" + divID + ')";

}