2017-12-06 9 views
0

私はしばらく見回していますが、解決策が見つかりませんでした。私がしようとしているのは、変数にある各要素のインデックスを持つ配列に自分のオプション値を含む変数を格納して、インデックスと呼ぶことです。ここで変数をループからインデックスに配列にプッシュ

は私のコードです:私はそこに、インデックスのそれぞれを選択したいので、私は配列に私のループ変数からオプション値をプッシュしようとしている

var selectArray = ['Package 1', 'Package 2']; 
 
var selectField = document.getElementById('testS'); 
 

 

 
\t for(i = 0; i < selectArray.length; i++) { 
 
\t \t let arrayList = selectArray[i]; 
 
\t \t let arrayOption = document.createElement('option'); 
 
\t \t selectField.appendChild(arrayOption); 
 
\t \t arrayOption.value = arrayList; // Value Option in Option 
 
\t \t arrayOption.innerHTML = arrayList; // Text in Option 
 

 

 
\t \t let newArray = []; 
 

 
\t \t newArray.push(arrayOption.value); 
 
    // This doesn't work I want each element in the variable to be indexed in the array. so I can do for example newArray[0] which will return Package 1 from the value. 
 

 

 

 
\t }
<select name="fromList" id="testS"></select>

理由で、それらにデータを含む別の配列を追加します。

+3

まず、あなたは、forループの外でNEWARRAYを宣言する必要があります。しかし、それをした後でさえ、newArrayはselectArrayとまったく同じではありませんか? –

答えて

1

newArrayを宣言する場所を変更するだけで済みます。 letはブロックレベルのスコープを作成するので、ループ内でdelcareすると、ループの1回の反復だけにスコープされます。ループの各反復時に変数を再宣言する必要はありません。なぜなら、それは以前の値を消去するからです。今

var selectArray = ['Package 1', 'Package 2']; 
 
var selectField = document.getElementById('testS'); 
 

 
// You need to declare variables in the scope that you will want to use them 
 
let newArray = []; 
 

 
\t for(i = 0; i < selectArray.length; i++) { 
 
\t \t let arrayList = selectArray[i]; 
 
\t \t let arrayOption = document.createElement('option'); 
 
\t \t selectField.appendChild(arrayOption); 
 
\t \t arrayOption.value = arrayList; // Value Option in Option 
 
\t \t arrayOption.innerHTML = arrayList; // Text in Option 
 

 
\t \t newArray.push(arrayOption.value); 
 
\t } 
 
    
 
console.log(newArray);
<select name="fromList" id="testS"></select>

、次の質問は、なぜあなたが本当にしても、これを行う必要があるんでしょうか? selectoptionの要素は常にこれを配列としてオンデマンドで得することができます。

var options = Array.prototype.slice.call(document.querySelectorAll("#testS > option")); 
+0

ありがとうございます。問題は範囲にあった。私は範囲にリフレッシャーコースが必要だと思います。私はこのコンセプトに戻って触れています。ありがとうございました!それはまさに私が望んでいたものです。 – Curious13

+0

@ Curious13よろしくお願いします。一番下の私の最後の更新をもう少し見てください。これを "the"答えと記すことを忘れないでください。 –

+0

私は参照してください。私はあなたがそれをすることができるかはわかりませんでした。私は自分のアプローチを試していたと思う。しかし、とにかく、配列にインデックスを選択しようとしていたので、他の値を追加することができます – Curious13

関連する問題