我正在开发一个asp.net页面,我有一个使用内容页面(我的网页控件)的母版页。在我的网页控件中,我有4个元素。当我更改picklisttype下拉列表时
PickListType - 下拉列表 UserPickList-不重要 组织 - 标签 身体 - 标签 地址 - 下拉
当我更改picklisttype dropdwon时,我想隐藏Body和Address,反之亦然。
当我第一次更改它时,它可以工作,但第二次,它说第二次无法找到Body和Address的ID(我将其可见性设置为隐藏)。在查看源代码时,似乎这些元素1)在回发期间改变了它们的ID并且.ClientId找不到它们或2)它们只是消失了。
我似乎无法弄清楚如何做到这一点。有任何想法吗?
function DropDownChange() {
var picklist = document.getElementById("PickListTypeList");
var usercontainer = document.getElementById("ctl00_ctl00_ctl00_PageContentPlaceHolder_PageContentPlaceHolder_paneDetails_ApplicerPickListContainer");
var orgcontainer = document.getElementById("ctl00_ctl00_ctl00_PageContentPlaceHolder__C_OrganizationPickListContainer");
var addresslabel = document.getElementById("LegalBodyAddressLabel");
var addressbox = document.getElementById("ctl00_ctl00_ctl00_PageContentPlaceHolder_PageContentPlaceHolder_paneDetails_ApplicantsRadDock_C_ApplicantsControl_AddEditApplicantDock_C_AddApplicantDock_C_LegalBodyAddressComboBox");
if(picklist.value.toLowerCase() === "sometext"){
usercontainer.style.display = "none";
orgcontainer.style.display = "inline";
addresslabel.visibility = "visible";
addressbox.style.display = "inline";
}
else{
usercontainer.style.display = "inline";
orgcontainer.style.display = "none";
addresslabel.visibility = "hidden";
addressbox.style.visiblity = "none";
}
}
这是源:我使用.ClientId动态查找id,但后来我将其更改为静态(每次都是相同的id),我似乎仍然无法获得地址和标签。我通过进入控件(controlname.nameofelementID.ClientID)从父(主)页面中找到这些元素。
答案 0 :(得分:1)
2个想法/选项
document.getElementsByClassName
检索它们。在回发后,.NET不会更改html标记上的类。OR
document.getElementById
包装标记,然后访问其firstChild
。我建议不要为此包装器执行runat="server"
答案 1 :(得分:1)
你有两种方法可以让它发挥作用:
document.getElementById("<%=LegalBodyAddressLabel.ClientId%>");