我想给出全局变量“title”的值(在函数 getInfo 中定义),但我在警报(title)中得到的只是“未定义”。当然我可以将警报放在最后一个函数中,但为什么我不这样做?
//[...]
var title;//global var
$(document).ready(
function(){
$.getJSON(url, displayImages)//open func displayImages
});
function displayImages(data) {
$.each(data.photoset.photo, function(i,item){
$.getJSON(url+item.id+"&format=json&jsoncallback=?", getInfo);//open func getInfo
alert(title);//output: undefined
});
}
function getInfo(data2){
title = data2.photo.title._content;//get value of title from json
}
最佳答案
$.getJSON
是异步的,这意味着如果您在 getInfo
方法中放置警报,它将在之后触发>alert(title)
即使它是在它之前的一行。
您可以这样修复此问题:
$.getJSON(url+item.id+"&format=json&jsoncallback=?", function(data) {
getInfo(data);
alert(title);
});
关于Javascript 初学者 - 全局变量不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27850153/