2

以下 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不存在,即使我之前只创建了几行。这里会发生什么?

我猜测imgDOM 元素不一定存在,即使引用它的变量确实存在。那正确吗?我能做些什么呢?

这是应用程序代码:

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();
            };
        }
    }
};
4

1 回答 1

1

看起来您的<span>元素永远不会附加到 DOM。<html>如果它们来自文档 ( ) ,您只能通过 id 找到它们。

<span>在尝试查找附加到它的任何内容(直接或后代)之前,请确保将其附加到文档中。

于 2014-04-22T21:32:48.030 回答