2011-03-16 20 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。

相關問題