如果ASP.NET损坏了DIV的ID,如何从javascript访问DIV?

如果ASP.NET损坏了DIV的ID,如何从javascript访问DIV?,asp.net,javascript,master-pages,Asp.net,Javascript,Master Pages,我有一个包含“div”元素的网页。页面上有javascript引用div:document.getElementById('divId')。在另一个开发人员重新设计页面以使用ASP母版页之前,这一切都很正常 现在,document.getElementById('divId')返回null。当您使用母版页时,ASP.net似乎会在内容表单中的元素名称前面加上一些字符。当页面加载时,我如何知道div的id是什么 更新允许我给出一个具体的例子来澄清这个问题:我的页面上有一个ID为divNotice的

我有一个包含“div”元素的网页。页面上有javascript引用div:
document.getElementById('divId')
。在另一个开发人员重新设计页面以使用ASP母版页之前,这一切都很正常

现在,
document.getElementById('divId')
返回null。当您使用母版页时,ASP.net似乎会在内容表单中的元素名称前面加上一些字符。当页面加载时,我如何知道div的id是什么


更新允许我给出一个具体的例子来澄清这个问题:我的页面上有一个ID为
divNotice
的div。将我的页面更改为使用母版页后,当我将源打印到呈现div ID为
ctl00\u contentplaceholder 1\u divNotice
的页面时,我会看到。我的问题是,当框架使用div ID时,我如何知道它将是什么?

您可以通过检查元素是否返回NOTNULL来检查元素是否存在

if (document.getElementById('divId') != null) { /* do your stuff*/ }
换言之:

if (document.getElementById('divId')) { /* do your stuff*/ }

现在你已经编辑了你的原始问题,我知道了。。我会这样做:

var arrDivs = document.getElementsByTagName('div'),
    strDivName = "divId";

for (i=0;i<=arrDivs.length;i++){
    if( arrDivs[i].id.indexOf(strDivName) != -1) {
        alert("this is it")
    }
}
var arrDivs=document.getElementsByTagName('div'),
strDivName=“divId”;

对于(i=0;i我想这就是你想要的

document.getElementById('<%=divNotice.ClientID%>')
document.getElementById(“”)
要获取html页面上显示的元素ID,请使用.ClientID


希望有此帮助。

使用Control.ClientID动态创建javascript以确定div的计算ID

document.getElementById('<%= DivControl.ClientID %>')
document.getElementById(“”)
或者使用基本ID作为搜索模式在客户端搜索元素。请参见此处:


我更喜欢服务器端计算,但如果您不经常这样做和/或您当前的设计禁止这样做,客户端方法是一个合理的解决办法。

也许您可以使用派生选择器

<div id="wrapperControler">
    <controler id="controler"></controler>
</div>

}

显然,我可以。我的问题是,既然使用母版页似乎会导致ID发生更改,我如何知道它会更改为什么?一个位于另一个控件中且具有
runat=“server”的控件
tag可以得到其名称前面基本上是一个控件层次结构的内容。因此,
myDiv
将被转换为类似于
ctl00\u containerA\u containerB\u myDiv的内容。您能看看ASP.net生成的几个页面的HTML源代码吗(例如,在浏览器中)?您使用的是什么版本的框架?4.0允许您设置任何服务器控件的客户端ID模式,以使其不会损坏。这是否意味着您实际上必须将这行JS放在有问题的ASP页面中?已接受:这不仅回答了我的问题,而且还帮助我找到了在e以前的开发人员使用了
ClientID
,它需要是
ID
@meo有很多方法可以将ClientID放置在页面上,这是其中之一,另一种方法是放置一个文本控件并呈现他内部的所有代码,另一种方法是将其注册为脚本,另一种方法是将ID放置在javascript的某些值上th RegisterScript,…如果您真的希望深入了解这一点,这里提供了一个很好的描述:。
 dosomething;