2017-09-23 1 views
-1

Ich bin durchschleifen Ergebnisse und schreibe sie in HTML.JavaScript Looping-Variablen auf der linken Seite des Gleichheitszeichens

ich die Nummer 1 auf der damit Seite des Gleichheitszeichens erhöhen möge - die Bindung - A_Inside_Bus_1_div, A_Inside_Bus_2_div, A_Inside_Bus_3_div etc ..

Wie soll ich darüber gehen?

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

Nicht. Der dynamische Zugriff auf Variablen ist eine schreckliche Angewohnheit. Stecken Sie alles in eine Liste und indexieren Sie die Liste. – Carcigenicate

+0

Ok, kannst du ein Beispiel geben. Nicht sicher, wie ich das verstehe. – Spinteractive

+0

Jetzt eine Antwort schreiben. Meine Finger sind gefroren, also geht es langsam. – Carcigenicate

Antwort

0

es wie folgt tun:

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

Bevor Sie den Rest, wie das Bearbeiten .innerHTML fortsetzen, müssen Sie diese Objekte erstellen. Erst danach kann man so etwas tun:

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(); 
      } 

Dies ist nur eine Idee, wie Sie über das „sollte gehen“, wie du gesagt hast.

0

Tun Sie dies nicht. Der Versuch, variable Namen zu erstellen, um das zu tun, was Sie gerade tun, führt nur zu unnötig unnötigem Code auf der Straße.

-Stick all Elemente in Arrays:

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 
    ... 
]; 

Dann gerade Index der Arrays:

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(); 
} 

Dies ist ein Beispiel dafür, wie Sie es mit Ihrem aktuellen Setup tun könnten. Beachten Sie jedoch, es könnte aufgeräumt werden. Wenn jedes Element des Arrays elems immer einen Partner in comments hat, wäre es sinnvoller, sie in einem Objekt zusammenzufassen und nur ein Array zu haben.

Beachten Sie auch, dass das Auffüllen der Arrays in einer Schleife sinnvoller ist. Ich habe die Arrays hier nur der Kürze halber fest programmiert. Ich bin mir nicht sicher, wie Sie die Elemente ursprünglich erstellen. Sie sollten wahrscheinlich erstellt und direkt in das Array eingefügt werden, anstatt sie zu benennen und später hinzuzufügen.

+0

Wir haben es funktioniert. Danke, es funktioniert perfekt. – Spinteractive

+0

Danke für all die tollen Vorschläge alle :) – Spinteractive

0

Es gibt ein paar Möglichkeiten, dies zu tun, gehen könnte, aber sie neigen dazu, ein paar ziemlich schlechte Gewohnheiten zu beteiligen, wie eval mit oder Variablen auf das globale Objekt angebracht, damit Sie sie mit einer Schnur zugreifen:

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

Aber es gibt bessere Alternativen, die häufigste ist wahrscheinlich sie in gleicher Länge Arrays zu speichern:

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

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

Sie auch auf den Aufbau aus einer einzigen Reihe von Objekten aussehen könnte:

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

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

Wenn diese Variablen tatsächlich die IDs von DIVsm sind und Sie davon abhängen, dass IDs in globale Varables umgewandelt werden, können Sie document.getElementById() verwenden, um auf sie zuzugreifen.

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

Das sieht auch gut aus. Vielen Dank. – Spinteractive

Verwandte Themen