Soundcloud API를 사용하고 있습니다. 사용자가 노래 또는 밴드 이름을 검색하면 내 페이지가 각 트랙과 연결된 모든 앨범 아트의 결과를 반환합니다. 각 트랙에 "재생"버튼을 삽입했습니다. 그러나, play link ("linky"라는 이름의 var)는 페이지에서 마지막으로 호출 된 트랙을 취하는 것처럼 보입니다. 따라서 모든 "재생"링크는 페이지의 마지막 트랙 만 재생합니다. 각 "재생"링크가 해당 트랙에 연결되도록하려면 어떻게해야합니까? 내 console.log(linky);
자바 클릭을 기반으로 URL 변경
SC.initialize({
client_id: 'xxxxeditedforprivacyxxxx'
});
function doSearch() {
var searchTerm = document.getElementById('search').value;
// Search soundcloud for artists
SC.get('/tracks', { q: searchTerm}, function(tracks) {
for(track in tracks) {
var img = document.createElement('img');
img.setAttribute("src", (tracks[track]["artwork_url"]));
var title = tracks[track].title.replace("'", "\\\'").replace("\"", "\\\"");
var song = document.createElement('div');
linky = tracks[track].permalink_url;
img.setAttribute("onclick", "showTrackInfo('" + title + "\\n" + "\\n" + tracks[track].label_name + "\\n\\n" + "(click to close)" + "')");
if (tracks[track]["artwork_url"] == null) {
console.log(""); }
else {
var Catalog = document.getElementById('catalog');
Catalog.appendChild(img);
$('div#catalog').append('<img src="http://i.imgur.com/rGdvfl7.png" id="play">');
console.log(linky);
$('img#play').click(function() {
$.get(
'http://soundcloud.com/oembed?' +
'url=' + linky +
'&format=json&maxheight=296'
)
.done(function (response) {
song.innerHTML = response.html;
document.getElementById("soundiframe").appendChild(song);
});
});
}
}
});
};
각 트랙에 대한 적절한 다른 URL을 보이고있다. 하지만 재생 버튼은 마지막 트랙을 재생하려고합니다. 내가 어디로 잘못 가고 있니? 어떤 도움을 주셔서 감사합니다!
감사를 제거했습니다 있도록
은 또한 당신은 DOM에 추가되지 않았다img
및Catelog
같은 일부 DOM 요소를 작성했다. 이 기능은 첫 곡에만 적용됩니다. 첫 번째 이후에 내가 클릭하는 다른 노래는 항상 마지막 노래를 반환합니다. 왜 이런 일이 일어 났는지 알겠습니까? 어느 쪽이든 저는 클로저 값에 대해 알게되어 정말 기쁩니다. – jenno@jenno 또 다른 문제는 루프 내에서 사용되므로'play'라는 id를 가진 여러 요소가 있다는 것입니다. –
@jenno 업데이트를 시도하십시오 –