我试图通过在每个结果旁边显示一个图片来自定义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提供错误"意外调用方法或属性访问",完全如下所述:JavaScript IE appendChild() - Unexpected call to method or property access
其中一位回答的人说IE因<img ...></img>
而出错,
我确实在HTML中看到了我的结果。它当然应该是<img ... />
。那么我该如何解决这个问题呢?非常感谢您的帮助!
答案 0 :(得分:1)
从," "
- 创建行的末尾删除img
。
您的代码正在尝试执行的操作:
theImageElement.appendChild(document.createTextNode(" "));
虽然有些浏览器可能会允许并默默地忽略此错误,但这确实是一个错误,并且IE 严格来说正确地抱怨它。
另外,HTML 不具有自动关闭标签。所以<img></img>
确实是图像元素的“正确”HTML表示,但是<img>
元素不允许有子节点。