下面是一个代码示例(只提取了必要的部分),我打算用它来组合几个准备好的(下载的)缩略图,然后以某种方式将它们插入到 DOM 中。JSLint 将此代码传递为 OK,但 FF/Firebug 在下面的本节中失败了,我收到一条错误消息“TypeError:readyHTML 为空”。我什至尝试过声明this.readyHTML = new ReadyHTML();
,var self = this;
然后self.readyHTML
从img.onload = function () {};
闭包中引用它。基本上我需要能够从 img.onload 的闭包中访问和更新 readyHTML 对象。不可能吗?我认为做错了什么,但我无法弄清楚在哪里/如何/为什么。
function ReadyHTML() {
"use strict";
this.buffer = [];
ReadyHTML.prototype.append = function (string) {
this.buffer.push(string);
return this;
};
return true;
}
function f() {
"use strict";
var readyHTML = new ReadyHTML();
var img = new Image();
var image_url;
img.onload = function () {
readyHTML.append('<a href=""><img src="' + image_url + '" class="xph4 ca"/></a>');
};
image_url = "some/url/to/an/image";
img.src = image_url; // This calls img.onload whence the error comes
}