以下 javascript 在加载时运行:
var shop_checkout = {
setup: function() {
var img = document.createElement('img');
img.src = '/public/styles/images/confirm_payment.png';
img.id = 'confirm_payment';
img.alt = 'Confirm Payment: submit order and charge my card';
var span = app.get('submit_checkout');
console.log('found the span');
span.innerHTML = '';
console.log('emptied the span');
span.appendChild(img);
console.log('appended the image');
img.onclick = shop_checkout.onsubmit;
console.log('set the onclick');
},
onsubmit: function() {
// irrelevant
},
submitted: function() {
// irrelevant
},
oncheckout: function(json, status) {
// irrelevant
}
};
app.onload(shop_checkout.setup);
(app.onload()
是一个简单的函数,它建立了一个加载时触发的函数列表,app.get()
是一个简单的快捷方式document.getElementById()
。这显示在底部。)
大多数时候,这很有效。一次又一次,它会清空跨度,但无法附加图像。产生的错误消息是:“Uncaught Error: NotFoundError: DOM Exception 8”。
现在,DOM Exception 8是一个未找到的错误,这表明它img
不存在,即使我之前只创建了几行。这里会发生什么?
我猜测img
DOM 元素不一定存在,即使引用它的变量确实存在。那正确吗?我能做些什么呢?
这是应用程序代码:
var app = {
get: function(id) {
return document.getElementById(id);
},
onload: function(func) {
// http://www.dustindiaz.com/top-ten-javascript/
var oldonload = window.onload;
if (typeof window.onload !== 'function') {
window.onload = func;
} else {
window.onload = function() {
if (oldonload) {
oldonload();
}
func();
};
}
}
};