函数外部的Javascript闭包变量访问
Javascript Closure variable access outside of function
我想在img#play
的函数中访问变量linky
。然而,它只承担链接的最后一个已知值,我理解这是由于所谓的Javascript闭包。谷歌和尝试许多不同的东西,如返回链接在img#播放点击功能似乎不起作用。我也被告知变量song
将遭受同样的问题。有人对如何使点击功能为img#播放工作的每个单独的链接,而不仅仅是最后一个有任何想法吗?
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);
});
});
}
}
});
};
我需要上面代码中的所有变量…如果有人有什么建议,我将不胜感激。
您可以创建另一个闭包:
(function(linky, song) {
$('img#play').click(function() {
...
}(linky, song));
这将保留在闭包创建时link的值
相关文章:
- 如何从字符串变量访问对象属性
- 无法使用变量访问数据 JSON
- D3:使用变量访问绑定数组中的对象
- JavaScript 变量访问错误
- CanvasJS-访问变量-访问属性toString的权限被拒绝
- 如何使用javascript数据对象?如何通过变量访问条目
- 如何使用变量访问对象属性
- 使用变量访问对象的属性
- 如何使用包含对象键名的变量访问对象属性
- 为什么通过缓存变量访问 DOM 更快
- 将 PHP 变量访问到外部 JavaScript 文件中
- 使用变量访问 Javascript 中的对象信息
- 使用变量访问 JSON 属性(字符串)
- 如何在 yii 中从 javascript 变量访问文本字段输入
- 如何使用 javascript 变量访问模型属性
- 根据 HighCharts 对象的变量访问数组的元素
- 使用动态变量访问 Meteor 中另一个变量的值
- 如何通过绑定的控制器变量访问服务的属性
- Angular JS工厂和变量访问
- 使用变量访问对象的值