我想在img#play
的函数内访问以下变量linky
。然而,它只接受了最后一个已知的linky值,而且我明白这是由于Javascript关闭引起的。谷歌搜索和尝试许多不同的东西,如在img#播放点击功能返回链接似乎没有工作。我也被告知变量song
将遭受同样的问题。任何人有任何想法如何使每个单独的链接,而不仅仅是最后的img#播放工作的点击功能?函数之外的Javascript关闭变量访问
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 2013-04-30 21:04:43
循环范围界定问题的共同点。你的$ .get()中的'song'将引用最后一个创建的,如果它甚至到达$ .get(),因为你在那之前返回一个值。非常奇怪的代码结构... – 2013-04-30 21:11:11
你期望用什么“return this.linky;” ? – 2013-04-30 21:15:32