为什么这不起作用?我认为,如果我将“prw”和“prh”变量设置在计算它们的函数之外,但在作用域函数内,它就会起作用。但事实并非如此!我做错了什么?
$(document).ready(function() {
var wrap = document.getElementById('imdiv');
var img = wrap.getElementsByTagName('img')[0];
var prw;
var prh;
$("<img/>")
.attr("src", $(img)
.attr("src"))
.load(function() {
prw = this.width;
prh = this.height;
});
console.log('prw ~ ', prw);
console.log('prh ~ ', prh);
});
最佳答案
问题与你的全局变量无关。唯一的问题是你在设置变量值之前打印了变量的值。一旦图像加载到dom,Load函数就会被调用。
这首先执行。值仍然没有定义
console.log('prw ~ ', prw);
console.log('prh ~ ', prh);
之后这将被执行。
prw = this.width;
prh = this.height;
如果您想查看正确的值,您应该在设置后立即打印这些值
$("<img/>")
.attr("src", $(img)
.attr("src"))
.load(function() {
prw = this.width;
prh = this.height;
console.log('prw ~ ', prw);
console.log('prh ~ ', prh);
});
关于JavaScript (JQuery) 全局变量不工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17693477/