我试图从this video复制代码。它已经老了,所以我更改了SDK的网址。这是JS代码:
function playSomeSound(genre){
SC.get('/tracks', {
genres: genre,
bpm: {
from: 40
}
}, function(tracks){
var random = Math.floor(Math.random() * 49);
SC.oEmbed(tracks[random].uri, { auto_play: true}, document.getElementByID('target'));
});
}
window.onload = function(){
SC.initialize({
client_id: '1166055b8d5ca23b9c265bf8846d1102'
});
var menuLinks = document.getElementsByClassName('genre');
for (var i = 0; i < menuLinks.length; i++){
menuLinks(i).onclick = function(e){
e.preventDefault();
playsomesound(menuLinks.innerHTML);
};
}
在第9行启动SC.oEmbed(....)时,它会给出错误&#34;无法读取属性&#39; uri&#39;未定义的。&#34;
有人可以告诉我什么是错的或指向可能有帮助的资源吗?
由于
答案 0 :(得分:0)
您的随机数有时会高于返回的曲目数组。 因此,如果您只返回了10首曲目,则无法访问uri的曲目&gt; 10.
您只需将限制添加到50即可。 或添加一个检查随机值不会大于tracks.length的函数。
这是一个工作小提琴:
function playSomeSound(genre){
SC.get('/tracks', {
genres: genre,
bpm: {
from: 40
},
limit: 50
}, function(tracks){
var random = Math.floor(Math.random() * 49);
console.log(random, tracks.length);
SC.oEmbed(tracks[random].uri, { auto_play: true}, document.getElementById("target"));
});
}
window.onload = function(){
SC.initialize({
client_id: '1166055b8d5ca23b9c265bf8846d1102'
});
}
playSomeSound('house');
/*
var menuLinks = document.getElementsByClassName('genre');
for (var i = 0; i < menuLinks.length; i++){
menuLinks(i).onclick = function(e){
e.preventDefault();
playsomesound(menuLinks.innerHTML);
};
}
*/