我有一个包含usercontrol的Web表单,我希望能够使用javascript从表单页面访问usercontrol中的html元素。
我尝试了以下内容:
document.getElementById('<%= usercontrol.clientid %>')
但是这返回了null
。
我浏览了一下firebug,发现usercontrol中的标签使用了像usercontrolid_myelement这样的clientid。我猜这样的事情可能有用:
document.getElementById('<%= usercontrol.clientid %>'+'_myelement')
有更好/更好的方法吗?
答案 0 :(得分:0)
您的问题可能是由于在html完全加载之前运行了javascript。
以下结果为空
<head>
<script type="text/javascript">
alert(document.getElementById('main'));
</script>
</head>
<body>
<div id="main">
</div>
</body>
这样更好并返回对象
<head>
function foo(){alert(document.getElementById('main'));}
</head>
<body onload="foo();">
<div id="main">
</div>
</body>
答案 1 :(得分:0)
如果您使用.net 4,那么您可以阻止生成的ID处于那种奇怪的格式。 只需添加此属性asp.net ClientIDMode =“Static” 例如
这应该可以让你更容易从davascript访问dom。
答案 2 :(得分:0)
我用心灵力量看过你的问题了!
您的问题是主页中的servercript无法访问用户控件的ASP.net元素。
解决方案是通过usercontrol中的属性公开元素,或者只显示所需元素的ClientID。然后,您可以像Javascript一样在Javascript中使用ClientID。