의 함수 내에서 아래 변수 linky
에 액세스하려고합니다. 그러나, 그것은 linky의 마지막 알려진 값을 취하는 것 뿐이며, 이것이 Javascript 클로저라고하는 뭔가 때문인 것으로 알고 있습니다. 검색 기능을 사용하여 img # play click 기능으로 돌아 가기 링크 검색과 같은 여러 가지 시도를 검색하고 시도해보십시오. 나는 또한 변수 song
같은 문제가 고통을 것입니다 말했다. 누구나 img # play를위한 클릭 기능을 만드는 방법에 대한 아이디어는 단지 마지막 링크가 아닌 각각의 개별 linky에 맞습니까? 누군가가이 많이 주시면 감사하겠습니다 무엇을해야하는지에 대한 단서가있는 경우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
for 루프 범위 지정 문제. $ .get() 내부의'song '은 이전에 값을 반환 했으므로 $ .get()에 도달 한 경우 마지막으로 생성 된 것을 참조합니다. 매우 이상한 코드 구조 ... –
"return this.linky;"를 사용하여 무엇을 기대합니까? ? –