我想从这个视频复制代码。它是旧的,所以我更改了SDK的url。下面是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);
};
}
在SC.oEmbed(....)开头的第9行,它给出了错误"Cannot read property 'uri' of undefined."
有人能告诉我什么是错的,或者指向一个可能有帮助的资源吗?
谢谢
您的随机数有时大于返回的曲目数组。因此,如果您只返回了10个音轨,您就不能访问音轨> 10的uri。
您可以简单地将限制添加到50。或者添加一个函数来检查random不会大于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);
};
}
*/
http://jsfiddle.net/iambnz/yy8hwg76/