Tienes razón, pensé que reducir el código todo lo posible ayudaría a quien me quisiera ayudar, pero de esa forma no sucede todo tal como en el proyecto en desarrollo
Lo vuelvo a poner, ahora solo he omitido el CSS. El código... obviamente se trata de intentar hacer un calendario. Sé que hay por ahí para usar gratuitamente pero quiero hacerlo yo, aunque sea con ayuda
No descarto que el problema este en un fallo de concepto por mi parte
Yo el código lo pruebo con firefox 16.02. Como no es un proyecto profesional no tengo especial interés en la compatibilidad con todos los navegadores
Código HTML:
Ver original<!DOCTYPE html>
<meta http-equiv="refresh" content="50" /> <script type="text/javascript" src="calendario.js"></script> <body onload="body_load()">
<div id="calendario_alineacion"> <table id="calendario_tabla"> <th>Mi
ércoles
</th>
Código Javascript
:
Ver originalvar fechaHoy = new Date();
var fOp = new Date(); //fecha operativa
/**
* Devuelve el nº de días que tiene un mes.
*/
function dem(mes,anio) {
return new Date(anio, mes, 0).getDate();
}
/**
* Devuelve el primer día del mes en formato número.
* 0 = Lunes. 2=Martes.... 5=Sábado, 6=Domingo
*/
function pddm(mes,anio){
return (new Date(anio,mes).getDay() + 6)%7;
}
/**
* La tabla en si misma ya debe existir. Lo que hace
* esta función es añadir las filas y las columnas,
* calculando primero cuantas filas se requieren, pues
* habrá meses que necesiten más que otros.
* También escribe el contenido de las celdas, es decir,
* los días del mes en su posición correspondiente.
*/
function crea_tabla(){
//
var nfnec=6; //numero de filas necesarias (Falta calcularlos)
//
//crear las filas y las celdas dentro del tbody de la tabla e introducir dias
var cdias = 1; //contador de dias
var tblBody = document.getElementById("calendario_tabla").getElementsByTagName("tbody")[0];
for (var f=0;f<nfnec;f++) {
var fila = document.createElement("tr");
for (var c=0;c<7;c++) {
var celda = document.createElement("td");
var ind=true; //Habrá celdas vacías que no deben lanzar eventos
var textoCelda;
//estilo remarcado para el día de hoy
if (fechaHoy.getDate() == cdias) {
celda.setAttribute("id","hoy");
}
if (f==0) {
if (c >= pddm(fOp.getMonth(),fOp.getFullYear())) {
//se empiezan a escribir los días
textoCelda = document.createTextNode(cdias);
cdias++;
} else {
textoCelda = document.createTextNode(" ");
ind=false;
}
} else{
if (f>0 && cdias<dem(fOp.getMonth(),fOp.getFullYear())) {
textoCelda = document.createTextNode(cdias);
cdias++;
} else {
textoCelda = document.createTextNode(" ");
ind=false;
}
}
celda.appendChild(textoCelda);
celda.setAttribute("class","calendario_celda");
fila.appendChild(celda);
if (ind) {
celda.addEventListener("click",function(){celda_click(celda.textContent);},false);
}
}
tblBody.appendChild(fila);
}
}
function celda_click(str){
alert("Evento"+str);
}
function body_load(){
crea_tabla();
}
Y bueno, lo dicho, toda ayuda se agradece