如果ASP.NET破坏其ID,我如何从javascript访问DIV?

时间:2010-06-15 19:03:57

标签: asp.net javascript master-pages

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

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

更新请允许我举一个具体示例来澄清问题:我的网页上有一个ID为divNotice的div。更改我的页面以使用母版页后,我看到当我将源打印到呈现div ID为ctl00_ContentPlaceHolder1_divNotice的页面时。我的问题是,当框架完成后,我怎么知道div ID会是什么?

4 个答案:

答案 0 :(得分:10)

我认为这就是你要找的东西。

document.getElementById('<%=divNotice.ClientID%>')

获取html页面上显示的元素ID使用 .ClientID

希望得到这个帮助。

答案 1 :(得分:2)

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

document.getElementById('<%= DivControl.ClientID %>')

或者使用基本ID作为搜索模式在客户端搜索元素。见这里:A generic way to find ASP.NET ClientIDs with jQuery

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

答案 2 :(得分:1)

您可以通过检查元素是否返回

来检查元素是否存在
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")
    }
}

你可以在这里看到一个演示: http://jsfiddle.net/pnHSw/2/

我认为你可以用正则表达式做得更好。

但这是一种纯粹的JS方式,我不知道ASP.net

编辑:我认为Aristos解决方案更清洁:P

答案 3 :(得分:0)

也许你可以使用后代选择器un css 包装器控制器控制器{

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

}