Javascript appendChild Image IE错误

时间:2014-04-08 15:33:29

标签: javascript jquery html internet-explorer appendchild

我试图通过在每个结果旁边显示一个图片来自定义javascript自动提示结果显示。除了在IE中,它的效果很好。这是我添加的代码:

var a = _b.DOM.cE("a", { href:"#" });
var pic = _b.DOM.cE("img",{src:"AutoSuggest/"+arr[i].id+".jpg",className:"float"}," ");
a.appendChild(pic);

这里是_b.DOM.cE功能:

if (typeof(_b.DOM) == "undefined")
    _b.DOM = {};

/* create element */
_b.DOM.cE = function ( type, attr, cont, html )
{
    var ne = document.createElement( type );
    if (!ne)
            return 0;

    for (var a in attr)
            ne[a] = attr[a];
    var t = typeof(cont);
    if (t == "string" && !html)
            ne.appendChild( document.createTextNode(cont) );
    else if (t == "string" && html)
            ne.innerHTML = cont;
    else if (t == "object")
            ne.appendChild( cont );
    return ne;
};

IE提供错误&#34;意外调用方法或属性访问&#34;,完全如下所述:JavaScript IE appendChild() - Unexpected call to method or property access 其中一位回答的人说IE因<img ...></img>而出错, 我确实在HTML中看到了我的结果。它当然应该是<img ... />。那么我该如何解决这个问题呢?非常感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

," " - 创建行的末尾删除img

您的代码正在尝试执行的操作:

theImageElement.appendChild(document.createTextNode(" "));

虽然有些浏览器可能会允许并默默地忽略此错误,但这确实是一个错误,并且IE 严格来说正确地抱怨它。

另外,HTML 具有自动关闭标签。所以<img></img>确实是图像元素的“正确”HTML表示,但是<img>元素不允许有子节点。