Código HTML:
Ver original
Un CSS con lo mínimo, con un background-color en gris para un div, como elemento más llamativo:
Código CSS:
Ver original
@charset "utf-8"; body{ font-family: Arial; font-size: 15px; } h1{ text-align: center; display: inline; margin: 0 40px; } #main{ width: 90%; margin: 0 auto; text-align: center; background-color:#F2F2F2; }
Y un javascript que crea todo el contenido del html:
Código Javascript:
Ver original
var hoy = new Date(); var any = hoy.getFullYear(); function vistaanual(any) { if(document.getElementById("main")) document.body.removeChild(document.getElementById("main")); document.write("<div id=\"main\">"); document.write("<button id=\"btn_any_ant\" value=" + parseInt(any - 1) + ">" + parseInt(any - 1) + "</button>"); document.write("<h1>" + any + "</h1>"); document.write("<button id=\"btn_any_sgt\" value=" + parseInt(any + 1) + ">" + parseInt(any + 1) + "</button>"); document.write("</div>"); // Cierro el div del main document.getElementById('btn_any_ant').addEventListener('click', function(){vistaanual(any - 1/*parseInt(document.getElementById('btn_any_ant').value)*/)}, false); document.getElementById('btn_any_sgt').addEventListener('click', function(){vistaanual(any + 1/*parseInt(document.getElementById('btn_any_sgt').value)*/)}, false); } /*window.onLoad = function(){*/ window.addEventListener('load', vistaanual(any), false); /*}*/
Mi intención es crear un calendario. Con otras funciones y estilos css, que no pongo aquí por no alargar el post, y que no afecta a la cuestión que me aborda, soy capaz de mostrar todos los días del año corriente, agrupados por meses y en forma de cuadrícula.
El problema que tengo es que sólo puedo aplicar los estilos CSS la primera vez que se carga el archivo "Calendario.html". En el momento que presiono alguno de los botones de año siguiente o año anterior, el resultado html se aplica correctamente, pero el calendario en sí no se muestra con sus cuadrículas (para hacerlo sencillo, en este ejemplo el background-color gris).
El div "main" lo destruyo porque, si no lo hago, sólo puedo presionar el botón de cambio de año 1 sola vez, donde sí aparece el texto, pero tampoco se aplica el CSS.
En definitiva, hay algo en la interacción entre CSS y Javascript que se me escapa. Pensaba que CSS se aplicaba automáticamente al cargar la página, pero no es así.
¿Alguien puede echarme una mano?
¿Cuál es el orden de carga de los elementos html, js y css?
He probado con "defer" la línea de carga de js, y con el window.onload que veis en el js, pero cualquiera de las dos formas no me escribe nada en pantalla, imagino que es porque la carga de la página ya ha concluido definitivamente.
Gracias.