无法读取未定义的 属性
cannot read property of 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);
}
当我试图将曲目 ID 推入新数组时出现错误,提示无法读取 属性 未定义的曲目(即 newTracks[i])。但相反,当我没有将它推入 newarr 我只是 console.log (newTracks[i].track.id) 时,它工作正常,我得到了所有的 id。正如所见,newTracks 是一个包含 ->track->id 的对象数组。帮助!
您的 for
循环格式不正确:
for(var i=0;newTracks.length;i++){
应该是:
for(var i=0; i<newTracks.length; i++){
您的循环版本将超出 newTracks
的范围,因为它只是测试 newTracks
数组是否为空,而事实并非如此(与您增加的次数无关我).
因此,当 i == newTrack.length 时,您将寻址一个不存在的数组元素(即 undefined
),从而导致出现错误.
如果您只需将 console.log(i, newTrack[i].length, newTrack[i]);
添加为循环中的第一条语句,就可以找出这些类型的问题。然后你看看它是如何越界的...
这是我的代码:
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 推入新数组时出现错误,提示无法读取 属性 未定义的曲目(即 newTracks[i])。但相反,当我没有将它推入 newarr 我只是 console.log (newTracks[i].track.id) 时,它工作正常,我得到了所有的 id。正如所见,newTracks 是一个包含 ->track->id 的对象数组。帮助!
您的 for
循环格式不正确:
for(var i=0;newTracks.length;i++){
应该是:
for(var i=0; i<newTracks.length; i++){
您的循环版本将超出 newTracks
的范围,因为它只是测试 newTracks
数组是否为空,而事实并非如此(与您增加的次数无关我).
因此,当 i == newTrack.length 时,您将寻址一个不存在的数组元素(即 undefined
),从而导致出现错误.
如果您只需将 console.log(i, newTrack[i].length, newTrack[i]);
添加为循环中的第一条语句,就可以找出这些类型的问题。然后你看看它是如何越界的...