我在这里有一个函数来检查图片的尺寸是否为100 x 100像素,如果是,则返回true
function checkDims(url) {
var valid = $("<img/>").attr("src", url).load(function() {
s = { w: this.width, h: this.height };
if (s.w == 100 && s.h == 100) {
return true;
}
else {
return false;
}
});
return valid;
}
我想设置一个名为valid的变量,使用.load function to get the image size of a remote URL进行检查,我希望它相应地返回true或false。我知道我将它设置为jQuery对象,但我想从内部函数中获取结果。
我尝试过:
function checkDims(url) {
var valid;
$("<img/>").attr("src", url).load(function() {
s = { w: this.width, h: this.height };
if (s.w == 100 && s.h == 100) {
valid = true;
}
else {
valid = false;
}
});
return valid;
}
但是当我调用checkDims函数
时,它给了我undefined作为有效值所以,如果我打电话
var s = checkDims(a_url)
。它会返回
未定义
答案 0 :(得分:1)
您需要将逻辑拆分为两步,因为这是异步调用。
function checkDims(url, callback) {
$("<img/>").attr("src", url).load(function() {
callback (this.width == 100 && this.height == 100);
}).on("error") { callback(false); });
}
function nextStep(isValid) {
alert("The image is " + ((isValid) ? "" : "not ") + "valid"
}
checkDims("foo.gif", nextStep);