JavaScript(JQuery)全局变量不工作
JavaScript (JQuery) Global Var not working?
为什么这不起作用?我想,如果我在计算"prw"answers"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);
});
这样做:
var prw;
var prh;
$(document).ready(function() {
var wrap = document.getElementById('imdiv');
var img = wrap.getElementsByTagName('img')[0];
$("<img/>")
.attr("src", $(img)
.attr("src"))
.load(function() {
prw = this.width;
prh = this.height;
return doStuff()
})
});
function doStuff(){
console.log('prw ~ ', prw);
console.log('prh ~ ', prh);
}
您在内部再次声明prw和prh$(文档)就绪因此,在该块中,您将创建两个与全局变量名称相同的局部变量,因此,由于JavaScript范围规则,您将访问局部变量,而不是全局变量。
考虑下一个例子:
var x = 3;
function f()
{
var x;
x = 2;
alert(x);
}
f();
alert(x);
输出为2和3。
相关文章:
- 全局变量和全局对象的属性之间有什么区别吗
- delete关键字在全局变量上的不同行为
- 在javascript函数中设置全局变量
- 如何将getJson的响应保存在全局变量中
- 从Javascript方法返回全局变量
- AngularJS中的封装窗口全局变量
- javascript隐式全局变量
- jQuery全局变量is't工作
- 全局变量确实'在script标记中的外部.js文件之后,nt工作
- 将PHP变量传递给Javascript不能通过PHP函数工作(与全局变量无关)
- JavaScript 中的全局变量无法正常工作
- JavaScript 中的全局变量无法按预期工作
- Javascript全局变量不工作&更多
- jQuery Mobile中的全局变量不再工作
- JavaScript(JQuery)全局变量不工作
- 全局变量如何在两个javascript文件中的Function中的javascript中工作
- Javascript全局变量没有按预期工作.的帮助
- 全局变量是如何在javascript中工作的(回调)
- JavaScript中的全局变量是如何工作的
- Javascript全局变量不工作