我在jQuery .load(function(){...})
处理程序中设置了两个局部变量,但我找不到在处理程序之外访问这些变量的方法。我尝试删除var
声明,但这不起作用。现在我正在尝试使用return
,但我无法让它工作。当我运行代码时,Firefox正在警告“[object HTMLImageElement]”,而不是警告数值。
*我可以在置于处理程序/函数内时验证alert(x)
是否有效。
以下代码是对Xavi's solution的修改,用于读取图片的实际尺寸。
var imagepopXY = $("<img/>").attr('src', imagepopSrc).load( function() {
var x = this.width;
var y = this.height;
return [x,y]
});
alert (imagepopXY[0]);
答案 0 :(得分:1)
imagepopXY包含图像而不是函数!
所以你不能这样称呼它。
如果要定义全局变量,请在函数前定义它们:
var x; var y;
var imagepopXY = $("<img/>").attr('src', imagepopSrc).load( function() {
x = this.width;
y = this.height;
});
但这不是一个非常好的代码!
答案 1 :(得分:0)
试试这样:
var imagepopXY = {};
$("<img/>").attr('src', imagepopSrc).load( function() {
imagepopXY.x = this.width;
imagepopXY.y = this.height;
});
alert ('X: ' + imagepopXY.x + ' Y: ' + imagepopXY.y);
答案 2 :(得分:0)
imagepopXY将包含图像,正如杰罗姆已经指出的那样。更大的问题是,即使在Mrchief的解决方案中,警报也不会向您显示这些值。为什么?因为在实际加载图像时会触发加载事件,并且在大多数情况下可能会在警报触发后触发(因为您在事件中分配了这些值,其余的代码会不断考虑而不考虑它)。
如果您的应用程序在继续之前需要x和y值,那么最好只在load事件中放入一个函数调用。像这样:
$("<img/>").attr('src', imagepopSrc).load(function() {
keepWorkingWithTheImage(this.width, this.height);
});
var keepWorkingWithTheImage = function(x, y) {
// your code is here
alert(x);
alert(y);
};