37

私は困惑しています。ドロップダウン リストのあるフォームがあり、リスト内のすべての値のリストを取得したいと考えています。以下の例は w3 スクールから引用しました (信頼できないことはわかっていますが、スタック オーバーフローに関する他のソリューションはこれと非常によく似ているようです)。それは私にとってはうまくいきませんでした.jsfiddleにプラグインしようとしましたが、うまくいきませんでした.

HTML:
<form>Select your favorite fruit:
    <select id="mySelect">
        <option value="a">Apple</option>
        <option value="o">Orange</option>
        <option value="p">Pineapple</option>
        <option value="b">Banana</option>
    </select>
</form>
<button type="button" onclick="displayResult()">Display text of all options</button>

JavaScript:

function displayResult() {
    var x = document.getElementById("mySelect");
    var txt = "All options: ";
    var i;
    for (i = 0; i < x.length; i++) {
        txt = txt + "\n" + x.options[i].value;
    }
    alert(txt);
}

jsfiddle で動作しない: http://jsfiddle.net/WfBRr/1/

ただし、サイトで動作します: http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_option_text2

これを解決する方法についてのアイデアはありますか?

4

6 に答える 6

8

変化する:

x.length

に:

x.options.length

フィドルへのリンク

textそして、私はエイブラハムに同意します-代わりに使用したいかもしれませんvalue

更新
フィドルが機能しなかった理由は、「No wrap - in」ではなく「onLoad」オプションを選択したためです。

于 2013-08-07T20:52:05.517 に答える
5

DOM 構造に従って、以下のコードを使用できます。

var x = document.getElementById('mySelect');
     var txt = "";
     var val = "";
     for (var i = 0; i < x.length; i++) {
         txt +=x[i].text + ",";
         val +=x[i].value + ",";
      }
于 2013-10-02T05:00:49.580 に答える
2

クリックイベントをボタンに直接配置すると問題が発生するようです。何らかの理由で、関数が見つかりません。理由がわからない...

ただし、JavaScript でイベント ハンドラーをアタッチすると、機能します。

こちらをご覧ください:http://jsfiddle.net/WfBRr/7/

<button id="display-text" type="button">Display text of all options</button>

document.getElementById('display-text').onclick = function () {
    var x = document.getElementById("mySelect");
    var txt = "All options: ";
    var i;
    for (i = 0; i < x.length; i++) {
        txt = txt + "\n" + x.options[i].value;
    }
    alert(txt);
}
于 2013-08-07T20:52:57.530 に答える