0

次のような配列があるとします。

myArray[0] = 1,2,3
myArray[1] = 2,3,5
myArray[2] = 1,4,5

(1,2,3)、(2,3,5)、(1,4,5) はコンボボックスの値です。

例えば。myArray[0] の場合:

<select name="somename" id="someid">
<option value="1">one</option>
<option value="2">two</option>
<option value="3">three</option>
</select>

例えば。myArray[1] の場合:

<select name="somename" id="someid">
<option value="2">two</option>
<option value="3">three</option>
<option value="5">five</option>
</select>

ポイントは、このmyArray[]値の 1 つをコンボボックスに割り当てることです。出来ますか?乾杯

4

3 に答える 3

2

もちろん。配列内の要素をループして、そこから html を作成できます。

var html = '';

for(var i = 0; i < myArray[0].length; i++){
   html += '<option value="' + myArray[0][i] + '">' + myArray[0][i] + '</option>';
}

document.getElementById('someid').innerHTML = html;

注: これは、ロジックを示すための非常に単純なサンプルです。もちろん、その機能が本当に必要な場合は、数値をテキスト値に変換する (つまり、1 を "1" に変換する) 方法も必要になります。

これがあなたの望むものではない場合は、質問をよりよく説明してください。myArraycreate one selectの特定のインデックスを使用するかどうかは明確ではありません。または、複数の選択リスト (既に存在する) に対応する配列値を入力する場合。後者の場合は、「someid」が実際に何であるかをより明確にして、各選択リストを正しく識別できるようにする必要があります。

于 2012-12-12T15:20:09.363 に答える
1

「Select」オブジェクトがすでにあると仮定すると、jQueryはありません:

var s = document.getElementById('someid');
var words = ["one", "two", "three", "four", "five"];

for(var i = 0; i < myArray[0].length; i++){
   var t = document.createElement("option")
   t.value = myArray[0][i];
   t.textContent = words[myArray[0][i]-1];
   s.appendChild(t)
}

実施例

それ以外の場合は、次を追加します。

var s = document.createElement("select");
s.id = 'someid';
s.name = 'somename';
var words = ["one", "two", "three", "four", "five"];

for(var i = 0; i < myArray[0].length; i++){
   var t = document.createElement("option")
   t.value = myArray[0][i];
   t.textContent = words[myArray[0][i]-1];
   s.appendChild(t)
}
document.body.appendChild(s);

私は手動の DOM 操作 ( .textContent) よりも( ) を好みます。これは、ブラウザが追加された HTML の構造を予測できない可能性があるinnerHTMLためinnerHTML、DOM が使用されるたびにブラウザが DOM 全体を強制的に再解析するためです。これにより、DOM 操作のレンダリングが、innerHTML

于 2012-12-12T15:23:49.890 に答える
1

配列を反復処理して、適切な DOM 要素を作成できます。次に例を示します。数値のルックアップ配列を単語に追加する必要があります。

numwords = ["one", "two", "three", "four", "five"];
myArray = [];
myArray[0] = [1,2,3];
myArray[1] = [2,3,5];
myArray[2] = [1,4,5];
for(var i = 0; i < myArray.length; i++){
    var select = document.createElement('select');
    for(var j = 0; j < myArray[i].length; j++){
        var option = document.createElement('option');
        option.value = myArray[i][j];
        option.innerHTML = numwords[myArray[i][j] - 1];
        select.appendChild(option);
    }
    document.body.appendChild(select);
}

ここにデモンストレーションがあります:http://jsfiddle.net/YJj3b/1

于 2012-12-12T15:20:21.713 に答える