2010-09-20 62 views
0

我有一些HTML創建一個下拉列表。該列表具有顯示給用戶的文本值和文本。我根據用戶選擇的「值」保存一些XML。在其他時間點,我需要解析XML並顯示原始文本,但不在原始列表中。在這一點上,我只有列表中的「值」而不是其顯示文本。起初,我打算使用switch語句來獲取顯示文本,但後來有了使用列表中保存的信息的想法。是否可以使用一點javascript來使用我必須查看列表上的顯示版本的值?如果是這樣,有人可以提供代碼片段嗎?我嘗試過不同的方式,但迄今爲止畫空白。下面顯示的是構成列表的html樣本。使用html下拉列表按值獲取正確的顯示文本

'<select id="ifmgr_tr_Field">' + 
'<option value="DeviceId">Device ID</option>' + 
'<option value="DeviceMac">Device MAC</option>' + 
'<option value="DeviceType">Device Type</option' + 
'</select>'; 

比方說,我有一個值「DeviceMac」,我想從這個列表中是「設備MAC」。請記住,我不想使用列表來顯示此時的值。

編輯

我可以做到這一點,但它感覺有點髒。

var item = $('#ifmgr_tr_Field')[0] ; 
item.value = field; // field would be the value I have, EG 「DeviceMac」 
var text = item.options[item.selectedIndex].text; // This will give me 「Device MAC」 which is what I want. 

回答

1

我希望這可以幫助。那麼它仍然有一個條件。但正如你所說,ListBox中的值不會改變。它使用列表作爲查找,並找到例如選項的文本爲「設備MAC」的選項。嗯...以及我用jQuery導致它有一個比傳統的JavaScript更好的循環(每個)功能。

$('#ifmgr_tr_Field option').each(function() { 
     var option = this; 
     if(option.text == 'Device MAC') 
     alert(option.text + " Value : " + option.value); 
    }); 
+0

謝謝,這是一種享受。 – Retrocoder 2010-09-21 11:11:49

0

我不知道你想在JS函數到底該怎麼做,但你需要的電平變化屬性添加到您的選擇項。它需要指向你的JS函數,並在改變時傳遞值。

'<select onchange="doTheFunction(this.value);" id="ifmgr_tr_Field">' + ... 

然後在您的JS代碼:

function doTheFunction(val){ 

    //val will hold the newly selcted value 

    if (val=="DeviceId"){ 
     //do something for DeviceId 

    } else if (val=="DeviceMac"){ 
     //do something for DeviceMac 

    } else if (val=="DeviceType"){ 
     //do something for DeviceType 

    } 
} 
+0

我可能沒有很好地描述這個問題。我不希望有一個「如果」的聲明,因爲我希望列表提供我想要的東西。我用一段代碼編輯了我的問題,但它可以直觀地更改列表,因爲它爲我提供了我需要的答案。我可以做類似的事情(使用列表作爲查找),但不改變顯示? – Retrocoder 2010-09-20 16:13:07