在JavaScript中,如何将值从未命名函数传递到另一个未命名函数?

时间:2017-04-26 21:35:42

标签: javascript jquery

我有两个函数,其中一个函数检查图像是否加载:

var img = document.createElement('img');
img.src = "xxx";
img.onload = function() {
    var dimensionValue = 'loaded';
};
img.onerror = function() {
    var dimensionValue = 'failed';
}

当用户点击按钮时执行后续功能,如下所示:

var trackClick = function(url) {
  console.log(dimensionValue);
};

我正在尝试在调用dimensionValue函数的位置记录trackClick的值(来自a链接)。但是,尽管第一个函数成功打印出dimensionValue,但是当第二个函数被触发时,它不包含任何值,或者它无法指示dimensionValue不存在。

我还尝试将trackClick放在onload / onerror函数中,但随后会显示一条消息,告知没有名为trackClick的函数

所以,我的问题是如何将一个未命名函数的值传递给JS中的另一个匿名函数?

2 个答案:

答案 0 :(得分:2)

您的变量可能无法被其他函数访问,因为它是在另一个函数中定义的。

尝试:

var dimensionValue;
var img = document.createElement('img');
img.src = "xxx";
img.onload = function() {
    dimensionValue = 'loaded';
};
img.onerror = function() {
    dimensionValue = 'failed';
}

我想你也可以这样做:

var trackClick = function(url) {
    var img = document.createElement('img');
    img.src = "xxx";
    img.onload = function() {
        console.log('loaded');
    };
    img.onerror = function() {
        console.log('failed');
    }
}

如果这不起作用,请发布所有代码以获得进一步的帮助。

答案 1 :(得分:0)

通过在函数之外声明dimensionValue,可以扩大可以访问它的范围。假设您的trackClick函数位于同一范围内,则应该可以访问dimensionValue

var dimensionValue
var img = document.createElement('img');
img.src = "xxx";
img.onload = function() {
    dimensionValue = 'loaded';
};
img.onerror = function() {
    dimensionValue = 'failed';
}