JavaScript (JQuery) 全局变量不工作?

标签 javascript jquery global

为什么这不起作用?我认为,如果我将“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/

相关文章:

javascript - 在js中选择不工作

javascript - OpenLayers 中基于标签的过滤器

python - global 关键字内联全局是否与 python 中的局部变量声明完全相同?

python - 为什么不用global关键字就不会报错

javascript - 如何从 Rails Controller 操作调用 javascript

javascript - 在 HTML 文件中搜索 - Swift

javascript - 如何向 ES6 javascript 类添加 mixins?

jquery - MVC4 razor 中带有文本框的 DropDownList

javascript - Jquery .ajax 获取 json 响应请求

c - 理论 : getter/setter function or global variable? C