我想在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