Я хочу получить доступ к переменной linky
ниже внутри функции для img#play
. Однако он принимает только последнее известное значение linky, и я понимаю, что это связано с тем, что называется закрытием Javascript. Google google и многие другие вещи, такие как return linky в функции img # play click, похоже, не работают. Мне также сказали, что переменная song
будет страдать от той же проблемы. У кого-нибудь есть идеи о том, как сделать функцию click для работы img # для каждой отдельной ссылки, а не только последней?Доступ к переменной Javascript Closure за пределами функции
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);
});
});
}
}
});
};
мне нужны все переменные в коде выше ... Если у кого есть какие-либо подсказки о том, что сделать это было бы оценено.
Похоже, что проблема связана скорее с асинхронным поведением. – adeneo
Общепринятая проблема. 'song' внутри вашего $ .get() будет ссылаться на последний созданный, если он когда-либо доходил до $ .get(), так как вы возвращаете значение до этого. Очень странная структура кода ... –
Что вы ожидаете от использования "return this.linky;" ? –