Похоже, childNodes.length отличается в разных браузерах, может быть, вам стоит использовать hasChildNodes?
Кроме того, вы использовали firebug (или любой js-отладчик) для проверки правильности заполнения элемента?
Редактировать: Я нашел, что не так. Вы не можете создавать объекты из объектов. Вместо этого вы должны создать массив объектов. Проверьте, есть ли у вас childNodes, и создайте объект, если его нет. В противном случае создайте массив.
Точно так же, как ваш вывод, подобный Python, показывает: -)