Вы используете очень странный цикл.
for (var j in array) {
// use array[i]
++ i
}
Проблема в том, что .getElementsByTagName
возвращает не массив, а интерфейс, похожий на массив. Например:
>>> for (var j in document.getElementsByTagName('body')) console.log(j)
0
length
item
namedItem
Следовательно, в вашем цикле for
/ in
i
поднимется до array.length + 2
вместо array.length - 1
. Поскольку array[array.length + 2]
не существует, он вернет undefined
и выдаст ошибку, когда вы попытаетесь получить доступ к его свойству.
Просто всегда используйте
for (var i = 0, len = array.length; i < len; ++ i) {
...
}
с массивами.