Ошибка Javascript appendChild Image IE

Я пытаюсь немного настроить отображение результатов автозаполнения 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() - Неожиданный вызов метода или доступа к свойству Один из ответивших людей сказал, что IE выдает эту ошибку из-за <img ...></img>, которую я действительно вижу в HTML, который создает мой результат . Конечно, это должно быть <img ... />. Итак, как я могу это исправить? Ваша помощь будет принята с благодарностью!


person David    schedule 08.04.2014    source источник
comment
Довольно сложно предложить какую-либо помощь, не зная, как выглядит _b.DOM.cE. Вы модифицируете минимизированный код?   -  person André Dion    schedule 08.04.2014
comment
@AndréDion Привет, Андре, код взят с сайта brandspankingnew.net/specials/ajax_autosuggest/, когда я его скачиваю, там немидифицированная версия кода. Я продолжу искать, смогу ли я получить код без необходимости его скачивания... не смог найти его за несколько секунд.   -  person David    schedule 08.04.2014
comment
@AndréDion Понятно, здесь вы можете увидеть код: pastebin.com/FHZBt2WB   -  person David    schedule 08.04.2014


Ответы (1)


Удалите ," " в конце строки создания img.

То, что делает ваш код, пытается сделать:

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

Хотя некоторые браузеры могут разрешать и молча игнорировать эту ошибку, это действительно ошибка, и IE строго говоря правильно жалуется на нее.

Кроме того, в HTML нет самозакрывающихся тегов. Таким образом, <img></img> действительно является «правильным» HTML-представлением элемента изображения, однако элемент <img> не может иметь дочерние узлы.

person Niet the Dark Absol    schedule 08.04.2014
comment
Великолепно! Отлично работает при удалении детали. Еще раз спасибо! - person David; 08.04.2014