Я могу воспроизвести это. Тем не менее, я не вижу ничего особенно плохого в вашем коде.
Просто предположение ... Вы вводите большое количество необработанного HTML на свою страницу. Возможно, браузер не может справиться с этим при определенных обстоятельствах. Я думаю, вы могли бы попробовать другой подход: использовать методы DOM, а не innerHTML
. Что-то вроде:
var select = document.createElement("select");
select.options.push( new Option("Blah", i) );
document.getElementById("elem_" + i).appendChild(select);
По моему опыту, браузеры иногда предпочитают это.
Обновление
Еще одна вещь, которую вы можете попробовать: сохранить весь необработанный HTML-код в переменной и сразу выполнить внедрение. Возможно, вы сможете избежать проблем, связанных с асинхронным выполнением функций DOM: -?