2011-03-16 59 views
3

我有一个包含usercontrol的web表单,我希望能够使用javascript从表单页面访问usercontrol中的html元素。使用JavaScript在用户控件中选择元素

我试过如下:

document.getElementById('<%= usercontrol.clientid %>') 

但这回null

我看了一下周围的萤火虫,发现usercontrol中的标签呈现像usercontrolid_myelement这样的clientids。我猜这样的东西可能会工作:

document.getElementById('<%= usercontrol.clientid %>'+'_myelement') 

有没有更好/更好的方式做到这一点?

回答

0

我已经看到你的问题与我的心灵能力!

您的问题是您的主页中的serverscript无法访问您的usercontrol的ASP.net元素。

解决方案是通过usercontrol中的属性公开元素或仅显示所需元素的ClientID。然后,您可以像使用Javascript一样使用Javascript中的ClientID。

0

您的问题可能是由于在html完全加载之前运行javascript。在空

<head> 
    <script type="text/javascript"> 
    alert(document.getElementById('main')); 
    </script> 
</head> 
<body> 
    <div id="main"> 

    </div> 
</body> 

下面的结果,这是更好,如果你使用的是.NET 4,然后你可以在这奇怪的格式是停止生成的ID返回对象

<head> 
    function foo(){alert(document.getElementById('main'));} 
</head> 
<body onload="foo();"> 
    <div id="main"> 

    </div> 
</body> 
+0

当javascript运行时,html被完全加载。问题是页面上没有用户控件的clientid元素。 usercontrol中的所有元素都具有以下形式的clientids:usercontrolid_elementid。 – geekchic 2011-03-16 17:53:50

+0

然后您需要公开要选择并使用其ClientID的子控件。如果你看到它很快就会变得混乱得到这个工作,我建议看看JQuery,以便你可以通过一个简单的选择器获得所需的元素,而不用担心ClientID – agradl 2011-03-16 17:57:57

0

。 只需将此属性添加到asp.net ClientIDMode =“Static”

这应该更容易在JavaScript中访问dom。