我有一个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。
答案 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 + ')";
}