El script tiene muchos errores. Para empezar, jamás cerrás los <tr> o los <th>. Si bien el navegador puede cerrarlos automáticamente, lo mejor es que lo hagas en tu código.
La falla que mencionás no está donde vos la marcaste, sino acá:
Código Javascript
:
Ver originalif (j == 7) {
document.write("</tr>");
j = 0;
}
Eso hace que siempre escriba 7 días. Jamás inicializás
j! Se corrigiría si iniciás
j con el valor de
diasemana - 1 de forma que no inicie en y no se ejecute ese código 7 veces si es que hay espacios en blanco. De todas formas hacer un calendario no es tan fácil como parece. No estás considerando años bisiestos. Además, si por ejemplo el 1ro del mes es un lunes, tu código que calcula
diasemana también está mal pues devolvería -7.
En fin, trabajar con fechas en programación por lo general requiere mucho trabajo. ¿Por qué no usás un calendario en JS ya hecho? Hay cientos :P