2010-11-07 89 views
0

我有以下的html代碼:獲取元素在JavaScript

<select name="drop1" id="Select1" size="4" multiple="multiple"> 
    <option value="1">item 1</option> 
    <option value="2">item 2</option> 
    <option value="3">item 3</option> 
    <option value="4">item 4</option> 
    <option value="0">All</option> 
</select> 

這個代碼是在用戶控件可用,所以,當我運行Web應用程序的ID改變。 我怎樣才能從一個按鈕上點擊JavaScript的選定項目?

+0

http://stackoverflow.com/search?q=clientid+javascript – mplungjan 2010-11-07 17:20:51

回答

2

如果您使用ASP.NET 4,你可以在web.config中設置靜態IDS:

<system.web> 
    <pages clientIDMode="Static"></pages> 
</system.web> 

這樣,你知道生成的ID。

如果你不使用ASP.NET 4.0的替代方法是聲明一個全局變量JS:

<script type="text/javascript"> 
    // TODO: be careful here and make sure the DOM is loaded 
    var mySelect = document.getElementById('<%= Select1.ClientID %>'); 
</script> 

隨後可能用於操作選擇。

+0

作出起訴的DOM是我可以使用jquery $(document).ready()對嗎?我必須在我的用戶控件中選擇所在的位置使用你的代碼?如果select是在一個div內,這也可以工作嗎? – wael 2010-11-07 17:28:41

+1

哦,你正在使用jQuery?你應該在你的問題中說明這一點。是的,你應該使用'$(document).ready',但使用jQuery你也可以使用CSS選擇器。例如,給你的DropDownList一個CSS類,然後:'var selectedValue = $('。myddl')。val();'。你不需要打擾損壞的ID。 – 2010-11-07 17:30:10

+0

作爲DOM加載的補充,如果您將腳本放在頁面末尾的關閉主體之前,則不再需要將代碼包裝在'$(document).ready'語句中,因爲此時它已經是加載。 – 2010-11-07 17:32:06

0

在普通的JavaScript:

var value = document.getElementById('Select1').value; 
+0

該id是**不** **'Select1'。 ASP.NET mangles生成的id。 – 2010-11-07 17:27:29

0

如果您不能使用.NET 4.0控制ID和你不想額外的標記添加到頁面中,您需要使用的檢索控制的元素客戶端ID:

var ddl = document.getElementByID('<%= Select1.ClientID %>'); 

編輯:如果您在使用jQuery,你能做到這一點,如果你不想要一個額外的類添加到您的DropDownList:

var value = $('#<%= Select1.ClientID %>').val(); 
0

使用jQuery:

$( 「選擇[名稱= drop1]」)VAL()