2016-08-04 24 views
-3

Hier ist mein Code lesen: (d. H Newtracks [i])kann nicht Eigentum von undefined

function makeIframePlayer(newTracks){ 
    var iframe = document.querySelector("iframe"); 
    var iframeSrc="https://embed.spotify.com/?uri=spotify:trackset:PREFEREDTITLE:"; 
    var newarr = new Array(); 
    for(var i=0;newTracks.length;i++){ 
      newarr.push(newTracks[i].track.id); 
     } 
    iframeSrc += newarr.join(); 
    iframe.src = iframeSrc; 
    console.log(iframe.src); 
} 

ich eine Fehlermeldung erhalten, wenn im zu sagen versucht, die Spur-ID in die newArray zu schieben, dass nicht Eigentum Spur undefinierter lesen kann. Aber im Gegenteil, es funktioniert gut, wenn ich es nicht in den newarr, sondern nur console.log (newTracks [i] .track.id) drehe, bekomme ich alle IDs. Wie gesehen, newTracks ist ein Array von Objekten, die enthält -> track-> ID. Hilfe!

+0

Eine einfache Prüfung des Wertes von 'I' in den Javascript-Debugger hat dazu beigetragen, würden Sie das Problem herauszufinden. – Barmar

Antwort

4

Ihre for Schleife ist falsch formatiert:

for(var i=0;newTracks.length;i++){ 

sein sollte:

for(var i=0; i<newTracks.length; i++){ 

Ihre Version der Schleife Schleife außerhalb des Bereichs von newTracks weil es Tests nur, dass die newTracks Array nicht leer ist , was es nicht ist (unabhängig davon, wie oft Sie erhöhen i).

Also, wenn i == newTrack.length, werden Sie ein Array-Element-Adresse, die nicht existiert (ist undefined) zu dem Fehler führt Sie erhalten.

Sie können diese Arten von Problemen herauszufinden, ob Sie nur console.log(i, newTrack[i].length, newTrack[i]); als erste Anweisung in der Schleife hinzufügen würden. Dann sehen Sie, wie es außerhalb der Grenzen läuft ...