2017-01-05 3 views
-2

Ich versuche, alle "Anzahl" divs nach vobj Objekt zu ersetzen. for-Schleife Werte zur globalen vobj passieren zu, jedoch nicht gedruckt numDiv[i].innerHTML = vobj[4]; nichtJavascript für Schleife und globales Objekt

5, 
5, 
5, 
5, 
5 

statt es unter

undefined 
undefined 
undefined 
undefined 
5 

so Schleife Objekt druckt, aber wie das letzte Objekt auswählen zu benutzen?

Object {0: "1"} 
Object {0: "1", 1: "2"} 
Object {0: "1", 1: "2", 2: "3"} 
Object {0: "1", 1: "2", 2: "3", 3: "4"} 
Object {0: "1", 1: "2", 2: "3", 3: "4", 4: "5"} 

-Code ist hier:

<div class="wrapNumber"> 
    <div class="number">1</div> 
    <div class="number">2</div> 
    <div class="number">3</div> 
    <div class="number">4</div> 
    <div class="number">5</div> 
</div> 

<script> 
    var numDiv = document.getElementsByClassName("number"), 
    numLen = numDiv.length, 
    vobj = {}; 

    for(let i =0; i < numLen; i += 1){ 
     vobj[i] = numDiv[i].innerHTML; 
     console.log(vobj); 
     numDiv[i].innerHTML = vobj[4]; 
    } 
</script> 

Working online code

+0

Da vobj [4] wird in den ersten paar Iterationen nicht gesetzt. sein Set, wenn es i = 4 erreicht ... Wie können Sie es zuweisen. – Fida

+0

'vobj [4]' ist bis zur letzten Iteration bei der Zuweisung nicht definiert. Was ist das Missverständnis? – Li357

+0

move 'numDiv [i] .innerHTML = vobj [4];' dies außerhalb der for-Schleife .. und es wird funktionieren. –

Antwort

3

Das Problem, das Sie v Zugriff auf [4] in for-Schleife .... aber es ist für die ersten vier Wiederholungen nicht vorhanden. Sie müssen den gesamten vobj mit allen Schlüsseln und Eigenschaften erstellen und dann können Sie darauf zugreifen.

<script> 
    var numDiv = document.getElementsByClassName("number"), 
    numLen = numDiv.length, 
    vobj = {}; 

    for(let i =0; i < numLen; i += 1){ 
    //filling vobj 
    vobj[i] = numDiv[i].innerHTML; 
    console.log(vobj); 

    } 
    //now we have full vobj... now we can access the key of that object 

for(let i =0; i < numLen; i += 1){ 
    numDiv[i].innerHTML = vobj[4]; 
} 
</script> 

Geige Arbeiten https://jsfiddle.net/r7xd1oka/2/