这是我的代码:
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);
}
当我试图将轨道id推入newarray时,我得到一个错误,说不能读取未定义的属性轨道(即newTracks [i])。但相反它的工作正常,而不是在newarr我推动它我只是console.log(newTracks [i] .track.id),我得到所有的ID。如图所示,newTracks是一个包含 - > track-> id的对象数组。救命!
答案 0 :(得分:4)
您的--parallel
循环格式错误:
for
应该是:
for(var i=0;newTracks.length;i++){
你的循环版本将循环超出for(var i=0; i<newTracks.length; i++){
的范围,因为它只测试newTracks
数组不为空,它不是(不是你增加了多少次) I 的)。
因此,当 i == newTrack.length 时,您将解决一个不存在的数组元素(newTracks
),从而导致您获得错误。
如果您只是将undefined
添加为循环中的第一个语句,则可以找出这些类型的问题。然后你会看到它是如何超出界限的......