TBH, если вы не используете предварительно свернутую библиотеку (или если OCDish достаточно для написания своей собственной), вам, вероятно, лучше всего использовать innerHTML до тех пор, пока IE <8 является существенным фактором (что, учитывая инерцию) корпоративного IT, будет долго). Реализация DOM (использующая термин «свободно») в IE до IE8 настолько глючна, нестандартна и неполна, что любой, по крайней мере пригодный для использования полный код, будет завален условными и частными случаями. </p>
FWIW, мне показалось, что проще всего построить HTML из обозначения данных с помощью кода, который переводит его, насколько это возможно, с использованием работающего DOM, с фиксированной фиксацией для IE, выполняемой с кодом, который загружается только для неработающих браузеров. .
Вот как будет выглядеть ваш код:
horus.appendChild
('cartitems',
[ 'div', '.cart_item',
[ 'img', { src: json[i].picture, alt: 'Item preview', classname: 'icon' } ],
[ 'p', null,
json[i].id, [ 'br' ], json[i].qty,
[ 'a', { href: 'javascript:clearProduct('+json[i].id+')' },
[ 'img', { alt: 'Seperator', src: 'images/form-sep.gif' } ],
[ 'img', { src: 'images/cross.png', title: 'Remove this item.' } ] ] ] ]);
horus.childText('cartcount', json.length);
Я не собираюсь публиковать здесь наши библиотеки целиком, но загляните в здесь
(начиная с строки 574, с мясом на 743), если вам интересно, с кодом исправления IE в здесь .