我有一个包含“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会是什么?
答案 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>
}