2009-10-08 27 views
14

にSELECTボックスの値を取得する私は、選択ボックスがあります。Internet Explorerの

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

をそして、私はこのJavaScriptを持っている:常に空を示し

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

item1、決してオプションが選択されました。ただし、これはで動作します。

答えて

23

非常に古いもの(Netscape 4の誰ですか?)以外のすべてのブラウザでitem.valueを使用できます。このケースでは機能しないのは、オプションに値属性がないからです。各属性の値を宣言する必要があります。あなたが現在持っているものは "text"プロパティだけです。通常は、値が宣言されていないときは常にデフォルト値になります。あるいは、これらのオプションのそれぞれの「値」を「テキスト」と同じにするために、window onloadイベントでコードをプッシュすることもできます。あなたは昔ながらの方法である、以下のコードを使用することができます

第三の方法:<>は.selectedIndexを選択するよう注意してください、#1に答えるために補遺として

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

oops、これはIE 6では動作しませんが、IE 8ではあります:( – bmw0128

+0

IE6でうまく動作するはずです - どのようなエラーが発生しますか? – Greg

+1

エラー自体はありません。値をチェックするチェックがあり、その値は決してありません。 – bmw0128

3

ができ-1いくつか< select> .options [n]に渡されると例外がスローされます。そのように、あなたは簡単なテストすればいいことがあります:

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

EDIT

パーティムさんのコメントを、s.selectedIndexが可能-1あなたはJavaScriptでそれを設定したり、空の<選択を作成した場合>ボックス。

+0

'selectedIndex'が-1のときは分かりますか?私はそれを見たことがない。 –

+0

'selectedIndex'が-1になる唯一の方法は、あなたが明示的にJavaScriptを介して-1に設定している場合です。 –

+0

しかし、私はあまりにも急激に下降してしまいました。編集しない限り、削除することはできません。ごめんなさい。 –

14

オプションタグに属性 "値"がないため、IE6とIE7は空の文字列を返します。あなたはFirefoxとIE 8

1

との互換性を壊すことなく、あなたが必要とする価値があるでしょうITEM1で

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

:あなたはこのようなオプションオブジェクトの「テキスト」フィールドから値を読み込む必要があります コードは、SELECTボックスからvaiable COLUMNNAMEを取得するためには、呼び出されたlayerDetails.styleColumn ... ALLブラウザ間で動作しますが、(SELECTタグが同じ名前とIDを持っている)

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; 
    } 
    }