我有两个函数,其中一个函数检查图像是否加载:
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中的另一个匿名函数?
答案 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';
}