2017-09-23 3 views
-1

私は結果をループしてhtmlに書き出しています。等号の左側のJavaScriptルーピング変数

私は、等号のLEST側の番号1をインクリメントしたい - 結合 - A_Inside_Bus_1_div、A_Inside_Bus_2_div、A_Inside_Bus_3_divなど。

は、どのように私はそれについて行けば?

for (var i = 0; i <= 4; i++) { 
    A_Inside_Bus_1_div.innerText = i + ". " + snapshot.child("0/A_Inside_Bus " + i).val(); 
    A_Inside_Bus_1_Comments_div.innerText = snapshot.child("0/A_Inside_Bus " + i + " Comments").val(); 
      } 
+0

しないでください。動的に変数にアクセスするのはひどい習慣です。すべてをリストに貼り付け、リストにインデックスを付けるだけです。 – Carcigenicate

+0

あなたは例を挙げることができます。私はそれを行う方法を理解しているか分からない。 – Spinteractive

+0

今答えを書く。私の指は凍っているので、ゆっくりと進みます。 – Carcigenicate

答えて

0

このようにそれを実行します。

var A_Inside_Bus_div = []; 
var A_Inside_Bus_Comments_div = []; 

休息を続ける前に、.innerHTMLを編集するように、あなたはそれらのオブジェクトを作成する必要があります。これは、あなたが言ったように、あなたが、それについて「行くべき」か単なるアイデアです

for (var i = 0; i <= 4; i++) { 
    A_Inside_Bus_div[i].innerText = i + ". " + snapshot.child("0/A_Inside_Bus " + i).val(); 
    A_Inside_Bus_Comments_div[i].innerText = snapshot.child("0/A_Inside_Bus " + i + " Comments").val(); 
      } 

:のみ、その後、あなたは次のような何かを行うことができます。

0

これを行わないでください。あなたがしようとしていることをするために変数名を作ろうとすると、不必要にコードが複雑になります。配列に

スティックすべての要素:

var elems = [ 
    A_Inside_Bus_1_div 
    A_Inside_Bus_2_div 
    ... 
]; 

var comments = [ 
    A_Inside_Bus_1_Comments_div 
    A_Inside_Bus_2_Comments_div 
    ... 
]; 

それからちょうどインデックス配列:

for (var i = 0; i <= 4; i++) { 
    elems[i].innerText = i + ". " + snapshot.child("0/A_Inside_Bus " + i).val(); 
    comments[i].innerText = snapshot.child("0/A_Inside_Bus " + i + " Comments").val(); 
} 

これは、あなたの現在の設定でそれを行うことができる方法の一例です。ただし、クリーンアップすることができます。 elems配列の各要素が常にcommentsにパートナーを持つ場合は、それらをオブジェクト内にまとめて1つの配列しか持たない方がよいでしょう。

さらに、ループ内に配列を配置する方が理にかなっています。私はここで簡潔にするために配列をハードコードしました。元々どのように要素を作成しているのか分かりません。それらはおそらく作成され、それらの名前を付けて後で追加するのではなく、配列にまっすぐに置くべきです。

+0

私たちはそれを働かせました。完璧に働いてくれてありがとう – Spinteractive

+0

おかげさまで、ありがとうございます。 – Spinteractive

0

あり、あなたがこれを行うに取り掛かることができカップルの方法があるが、彼らはあなたが文字列でそれらにアクセスできるようにevalを使用するか、グローバルオブジェクトに変数を装着するように、いくつかの非常に悪い習慣が関与する傾向がある:

var a = 1; 
window['a']; //1 

しかし、より良い選択肢がありますが、最も一般的なのは、おそらく同じ長さの配列に格納されています

var divs = [div1, div2, div3]; 
var items = ['cat', 'dog', 'fish']; 

items.forEach(function(element, index){ 
    divs[index].innerText = items[i]; 
}); 

ます。また、オブジェクトの単一のアレイを構築で見ることができる:

var objects = [{div: div1, item: 'cat'}, {div: div2, item: 'dog'}, {div: div3, item: 'fish'}]; 

for object in objects { 
    object.div.innerText = object.item; 
} 
1

これらの変数が実際にDIVsmのIDであり、IDがグローバル変数に変換されているということに依存する場合は、document.getElementById()を使用してアクセスできます。

for (var i = 0; i <= 4; i++) { 
    document.getElementById('A_Inside_Bus_' + (i+1) + '_div').innerText = i + ". " + snapshot.child("0/A_Inside_Bus " + i).val(); 
    document.getElementById('A_Inside_Bus_' + (i+1) + '_Comments_div').innerText = snapshot.child("0/A_Inside_Bus " + i + " Comments").val(); 
} 
+0

これも良いですね。ありがとうございました。 – Spinteractive

関連する問題