2009-10-08 33 views
14

bir SEÇ kutusunun değerini alma Ben seçilmiş bir kutu var:Internet Explorer

<select id="item1" name="Item 1"> 
    <option> </option> 
    <option> Camera </option> 
    <option> Microphone </option> 
    <option> Tripod </option> 
</select> 

Ve bu JavaScript vardır: her zaman boş gösterir

var item1= document.getElementById("item1").value; 

item1, asla seçeneği seçili. Ancak, bu, 'da çalışır.

cevap

23

Öğe.value kullanımı çok eski olanlar dışındaki tüm tarayıcılarda çalışır (Netscape 4 kimse?). Bu durumda işe yaramasın nedeni, seçeneklerde değer özniteliğiniz olmamasıdır. Her bir özellik için değer beyan etmelisiniz. Şu anda sahip olduğunuz, yalnızca hiçbir değer bildirilmediğinde varsayılan olarak varsayılan değer olan "metin" özelliğidir. Alternatif olarak, bu seçeneklerin her birinin "metin" ile aynı "değerine" sahip olması için pencere kaldırma olayındaki bazı kodları da itebilirsiniz. Eğer eski moda bir yoldur aşağıdaki kodu kullanabilirsiniz

üçüncü yolu seçmek,

var s = document.getElementById('item1'); 
var item1 = s.options[s.selectedIndex].value; 
+0

oops, IE 6'da çalışmıyor, ancak IE 8'de çalışıyor :( – bmw0128

+0

IE6'da iyi çalışıyor mu? - Hangi hatayı alıyorsunuz? – Greg

+1

hiçbir hata, ben bir değer için bir çek var bir kontrol var, ve değer asla – bmw0128

3

zeyilname olarak 1. cevaplamak için < olarak dikkatli olmak> .selectedIndex olabilir -1 bazı <'a girildiğinde bir istisna atacak zamanlar> .options [n] öğesini seçin. Bu nedenle, hızlı bir test yapmak do isteyebilirsiniz:

var s = document.getElementById('item1'); 
var item = (-1 != s.selectedIndex)? 
       s.options[s.selectedIndex] : null; 

DÜZENLEMEYİ

Başına Tim'in yorum, s.selectedIndex JavaScript ile ayarlarsanız -1 olabilir veya boş bir < seçme oluşturmak > kutu.

+0

Eğer selectedIndex -1 olabilir, biliyor musunuz? Bunu hiç görmedim. –

+0

"selectedIndex" değeri -1 olabilmesinin tek yolu, açık bir şekilde JavaScript ile -1 olarak ayarlanmış olmanızdır. –

+0

Ancak, fazla aceleyle düşürdüm ve şimdi düzenlemediğiniz sürece onu kaldıramıyorum. Afedersiniz. –

14

Seçenek etiketleriniz "value" değerine sahip olmadığından IE6 ve IE7 size boş bir dize döndürecektir. Böyle Seçenek nesnesinin "metin" alanından değerini okumalısınız: Öğe1 içinde

var item1 = s.options[s.selectedIndex].text; 

Eğer Firefox ve IE 8.

1

ile uyumluluğu bozmadan ihtiyaç değere sahip olacak Kod SEÇ kutusundan bir vaiable SütunAdı almaya çağırdı layerDetails.styleColumn ... TÜM tarayıcılarda da çalışır, (SEÇ etiket aynı ada ve kimliği vardır)

var columnName = document.getElementsByName('layerDetails.styleColumn')[0].value; 
if (columnName == null || columnName == '') 
    { 
    columnName = document.getElementById('layerDetails.styleColumn').value; 
    } 

if (columnName == null || columnName == '') 
    { 
    var select = document.getElementById('layerDetails.styleColumn'); 
    columnName= select.options[select.selectedIndex].value; 
    if (columnName == null || columnName == '') 
    { 
    columnName= select.options[select.selectedIndex].text; 
    } 
    } 
İlgili konular