Javascript-在函数定义的变量中使用
我想执行这个函数,并在函数外部使用变量,但在每个函数内部使用变量。我怎样才能让它工作Javascript-在函数定义的变量中使用,javascript,jquery,Javascript,Jquery,我想执行这个函数,并在函数外部使用变量,但在每个函数内部使用变量。我怎样才能让它工作 $('.social').each(function() { url = "http:www.google.com"; bit_url(url); $(element).append(urlshortened); }); function bit_url(url) { var url = url; var username = "...";
$('.social').each(function() {
url = "http:www.google.com";
bit_url(url);
$(element).append(urlshortened);
});
function bit_url(url) {
var url = url;
var username = "...";
// bit.ly username
var key = "...";
$.ajax({
url : "http://api.bit.ly/v3/shorten",
data : {
longUrl : url,
apiKey : key,
login : username
},
dataType : "jsonp",
success : function(v) {
urlshortened = v.data.url;
}
});
}
Ajax中的“A”代表异步代码,它不能像那样工作,您需要回调
function bit_url(url) {
[...]
//return the Deffered object
return $.ajax({ [...]
}
$('.social').each(function() {
[...]
//attach a `done` callback to the returned $.ajax's Deferred instance
bit_url(url).done(function(v) {
$(element).append(v.data.url);
});
});
相当于$。ajax
的success
,我在范围内附加了done
处理程序。每个范围都可以访问范围内的所有变量
尽管如此,如果$(element)
始终是同一个元素,那么@JohnJohnGa的回答可以通过将append
放入成功处理程序中来实现
我假设您希望替换中的锚定“href
。由于问题的性质,每个
都将存储对中链接的引用。每个
都将在回调中使用该引用。您可以将结果附加到success
函数中
success: function (v) {
urlshortened = v.data.url;
$(element).append(urlshortened)
}
因此,您的代码将是:
$('.social').each(function () {
url = "http:www.google.com";
bit_url(url);
});
function bit_url(url) {
var url = url;
var username = "...";
// bit.ly username
var key = "...";
$.ajax({
url: "http://api.bit.ly/v3/shorten",
data: {
longUrl: url,
apiKey: key,
login: username
},
dataType: "jsonp",
success: function (v) {
$(element).append(v.data.url);
}
});
}
什么是元素
?(如$(element).append(urlshorted)
)哪个变量?¯\_(ツ)_/''任何元素,都不重要您在谈论哪个变量?请更具体一点变量urlshortener将在函数bit_url中定义