Hola:
Con document.write teniendo la página cargada siempre vas a "machacar" su contenido tal como según parece ya has comprobado.... si no sabes usar el DOM (creando e insertando nodos)... es algo más trabajoso pero estándar y eficaz, la alternativa innerHTML funcionaría agregando datos, en vez de usar "=", poner por delante un "+"... y otra forma es fabricar una variable con toda la cadena que vas a incrustar y hacer solo una asignación...
inser = "";
do{
in ser += (más cosas);
} while (fin del bucle);
[el elemento].innerHTML = inser;
Saludos