2012-03-27 5 views
43

でドロップダウンリストを移入:JavaScriptを - 私は、スクリプト内で宣言された配列を持つ配列

var myArray = new Array("1", "2", "3", "4", "5" . . . . . "N"); 

私は、ドロップダウンメニューを含むフォームがあります。JavaScriptを使用して

<form id="myForm"> 
    <select id="selectNumber"> 
    <option>Choose a number</option> 
    </select> 
</form> 

を、どのようになります残りのドロップダウンメニューに配列の値を入力しますか?オプションは「数字を選択」、「1」、「2」、「3」、「4」、「5」となります。 。 。 。 。 "N"?

+3

あなたの試行とあなたに表示されているエラーメッセージを投稿してください。ありがとうございました。 – bernie

答えて

66

あなたは配列要素をループし、それぞれに新しいDOMノードを作成し、オブジェクトに追加する必要があります。

このような何かが動作するはず
var select = document.getElementById("selectNumber"); 
var options = ["1", "2", "3", "4", "5"]; 

for(var i = 0; i < options.length; i++) { 
    var opt = options[i]; 
    var el = document.createElement("option"); 
    el.textContent = opt; 
    el.value = opt; 
    select.appendChild(el); 
}​ 

Live example

+0

'textContent&valueは関数ではありません.'というエラーが出ています。その解決策は、**キャスト**のように文字列にキャストすることでした: ' el.textContent = String(opt); el。value = String(opt); ' ** optの場合**は** String ** _ではありません。 –

+0

@AbdallahOkashaそれは意味をなさない。このエラーは 'el.textContent'を' el.textContent(opt) 'のように使用しようとすると起こります。私のexmapleのように使っているのであれば、ブラウザが文字列に変換するのは 'number'なのかどうかは関係ありません。 –

+0

実際には、私は 'el.textContent = arr [i]'または 'el.value = arr [i]'と書こうとしましたが、エラーが出ました:** _ value_、_text_および_textContent_機能**ではありません。 –

7

var dropdown = document.getElementById("dropdown1"); 
if (dropdown) { 
    for (var i=0; i < month.length;++i){  
     addOption(dropdown, month[i], month[i]); 
    } 
} 

addOption = function(selectbox, text, value) { 
    var optn = document.createElement("OPTION"); 
    optn.text = text; 
    optn.value = value; 
    selectbox.options.add(optn); 
} 

あなたはより多くの詳細についてはこちらの記事を参照することができます:
あなたが最初に取得します http://www.plus2net.com/javascript_tutorial/list-adding.php

4
["1","2","3","4"].forEach(function(item) { 
    var o = document.createElement("option"); 
    o.textContext = item; 
    document.getElementById("myselect").appendChild(o); 
}); 
+1

これはHTML5互換ブラウザでのみ機能します。 –

6

をドロップダウン要素DOMから耳鼻咽喉科、配列を通じて、ループ、およびこのようなドロップダウンの新しいオプションとして、各要素を追加します。ライブデモ用

// Get dropdown element from DOM 
var dropdown = document.getElementById("selectNumber"); 

// Loop through the array 
for (var i = 0; i < myArray.length; ++i) { 
    // Append the element to the end of Array list 
    dropdown[dropdown.length] = new Option(myArray[i], myArray[i]); 
}​ 

参照JSFiddleは:http://jsfiddle.net/nExgJ/

これは、あなたがしていることを前提としていJQueryを使用せず、基本的なDOM APIのみを使用できます。

+0

注:このコードをコピーして貼り付けると、この問題が発生しました。http://stackoverflow.com/questions/4404526/unexpected-token-illegal-in-webkit –

+0

@NielsBrinch - 直接コピー&ペーストしないでくださいJSFiddleから:) – DashK

+0

私は実際にコピーしてStackovervflowからではなく、フィドル - しかし多分Stackoverflowの著者は自分のフィドルからコピー貼り付け、コピーペーストが引き継がれました! :) –

0
<form id="myForm"> 
<select id="selectNumber"> 
    <option>Choose a number</option> 
    <script> 
     var myArray = new Array("1", "2", "3", "4", "5" . . . . . "N"); 
     for(i=0; i<myArray.length; i++) { 
      document.write('<option value="' + myArray[i] +'">' + myArray[i] + '</option>'); 
     } 
    </script> 
</select> 
</form> 
27

あなたはまた、jQueryを使ってそれを行うことができます。

var options = ["1", "2", "3", "4", "5"]; 
$('#select').empty(); 
$.each(options, function(i, p) { 
    $('#select').append($('<option></option>').val(p).html(p)); 
}); 
+1

この質問にはjQueryタグはありません。 –

+17

私は、誰かを助ける可能性のある答えを投票しても大丈夫だと思います。 jQueryはJavaScriptのフレームワークであり、その質問はJavaScriptに書かれています。このような行動は、人々が貢献することを低下させるでしょう。 –

+0

http://meta.stackexchange.com/questions/45176/when-is-use-jquery-not-a-valid-answer-to-a-javascript-questionを参照してください –

6

私は、これはまた、作品見つけ...

var select = document.getElementById("selectNumber"); 
var options = ["1", "2", "3", "4", "5"]; 

// Optional: Clear all existing options first: 
select.innerHTML = ""; 
// Populate list with options: 
for(var i = 0; i < options.length; i++) { 
    var opt = options[i]; 
    select.innerHTML += "<option value=\"" + opt + "\">" + opt + "</option>"; 
} 
2

私は "アレックスターピン" ソリューションを使用し、同じ要件を持っていました以下に述べるように小さな訂正で。

var select = document.getElementById("selectNumber"); 
var options = ["1", "2", "3", "4", "5"]; 

for(var i = 0; i < options.length; i++) { 
    var opt = options[i]; 
    var el = document.createElement("option"); 
el.text = opt; 
    el.value = opt; 
    select.add(el); 
}​ 

訂正をDOMが準備するときのappendChild()関数でロードしているため。したがって、これは古い(8以下の)IEバージョンでは機能しません。だから訂正すればうまくいきます。

ありがとうございました。

いくつかのノートについてdifferences b/w add() and appendChild()

関連する問題