linky
の関数内で以下の変数にアクセスしたいimg#play
。ただし、linky の最後の既知の値のみを使用しており、これは Javascript クロージャーと呼ばれるものによるものだと理解しています。img#play クリック関数内でリンクを返すなど、さまざまなことをグーグルで試してみてもうまくいかないようです。また、変数にもsong
同じ問題が発生すると言われました。img#play のクリック機能を、最後のものだけでなく、個別のリンクごとに機能させる方法について、誰かアイデアがありましたか?
function doSearch() {
var searchTerm = document.getElementById('search').value;
// Search soundcloud for artists
SC.get('/tracks', { q: searchTerm}, function(tracks) {
for(track in tracks) {
console.log(tracks[track]);
var img = document.createElement('img');
img.setAttribute("src", (tracks[track]["artwork_url"]));
var title = tracks[track].title.replace("'", "\\\'").replace("\"", "\\\"");
var song = document.createElement('div');
var linky = document.createElement('a');
linky.setAttribute("href", (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">');
$('img#play').click(function() {
return this.linky;
$.get(
'http://soundcloud.com/oembed?' +
'url=' + linky +
'&format=json&maxheight=296'
)
.done(function (response) {
song.innerHTML = response.html;
document.getElementById("soundiframe").appendChild(song);
});
});
}
}
});
};
上記のコードにすべての変数が必要です...何をすべきかについての手がかりがあれば、それは大歓迎です。