Forum Pplware
Projecto Calendário Javascript - Versão de Impressão

+- Forum Pplware (http://forum.pplware.com)
+-- Fórum: Mais Tech (/forumdisplay.php?fid=11)
+--- Fórum: Programação e Web (/forumdisplay.php?fid=16)
+--- Tópico: Projecto Calendário Javascript (/showthread.php?tid=6921)



Projecto Calendário Javascript - saracanelas - 23-08-2010 01:56

Boa noite a todos os participantes deste fórum.

Chamo-me Sara Canelas, actualmente sou estudante nível IV desenvolvimento de produtos multimédia e venho por este meio pedir-vos ajuda para a conclusão do um projecto que estou a desenvolver para javascript.

Estou a tentar gerar o calendário para os 12 meses deste ano. O meu problema está na impressão dos dias. Deixo aqui o código para que percebam.

Código:
function calendario(){
    var data = new Date();
    var ano = data.getFullYear();
    var mes = data.getMonth();
    var dia = data.getDate();
    var diaSemana = data.getDay();
                
    var meses = ["Janeiro", "Fevereiro", "Março", "Abril", "Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"];
    var semana = ["Dom","Seg","Ter","Qua","Qui","Sex","Sab"];
    data.setDate(1);
                
    for (m=0; m<meses.length; m++) {
                
    document.write("<center><table border=1><tr><th colspan=7>" + meses[m] + " " + ano + "</th><tr>");
    document.write("<tr>");
                    
    for (i=0; i<semana.length; i++) {
        document.write("<td>" + semana[i] + "</td>");
    }
    document.write("</tr>");
                    
    for (i=0; i<data.getDay(); i++) {
        document.write("<td></td>");
    }
                                        
    for (i=0; i<31; i++) {
        if (data.getDate()>i) {
            diaSemana = data.getDay();
                    
            if (diaSemana == 0) {
                document.write("<tr>");
            }
                            
            if (diaSemana != 7) {
                document.write("<td>" + (i+1) + "</td>");
            }
                            
            if (diaSemana == 7) {
                document.write("</tr>");
            }
        }
        data.setDate(data.getDate() + 1);
    }
    }
}

Como uso o Mozilla como browser executei este script passo a passo e verifiquei que a variável data, ao entrar no ciclo for que controla os dias, ela esta a assumir o mês actual, Agosto como tal, gera-me as tabelas correctamente, mas na tabela do mês de Janeiro começa-me a imprimir os dias de Agosto. A minha dúvida é a seguinte: da mesma forma que mando imprimir os meses tenho que criar um ciclo for (i=0; i<meses.length; i++) antes de abrir o ciclo dos dias? já andei com algumas tentativas para resolver o assunto mas sem sucesso.

Agradeço qualquer ajuda que me possam dar para a resolução deste meu problema.

Cumprimentos.


RE: Projecto Calendário Javascript - asantos3 - 23-08-2010 16:04

não era mais fácil pegar numa coisa já feita e modificar? procura por jquery calendar no google ou ve este post:
http://www.alexandremagno.net/blog/2009/06/18/calendario-para-jquery-em-portugues/


RE: Projecto Calendário Javascript - saracanelas - 23-08-2010 16:24

(23-08-2010 16:04)asantos3 Escreveu:  não era mais fácil pegar numa coisa já feita e modificar? procura por jquery calendar no google ou ve este post:
http://www.alexandremagno.net/blog/2009/06/18/calendario-para-jquery-em-portugues/

Existe sim muitos tutoriais a ensinar como gerar calendários em Javascript espalhados pelo google mas, muitos deles, são para gerar o mês actual e esse não é o objectivo do trabalho. O objectivo mesmo deste trabalho é gerar o calendário dos 12 meses do ano. Mesmo assim agradeço o site. Irei vê-lo com atenção e ver se consigo alterar para o que quero exactamente.

Cumprimentos Wink


RE: Projecto Calendário Javascript - saracanelas - 23-08-2010 19:47

Problema Resolvido.
Deixo aqui a resolução. Pode sempre dar algum jeito para quem estiver a pesquisar:

Código:
function calendario(){
        var data = new Date();
        var ano = data.getFullYear();
        var mes = data.getMonth();
        var dia = data.getDate();
        var diaSemana = data.getDay();
        var meses = ["Janeiro", "Fevereiro", "Março", "Abril", "Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"];
        var semana = ["Dom","Seg","Ter","Qua","Qui","Sex","Sab"];
        var diasMes=[31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
        data.setFullYear(ano, 0, 1);
                      
        for (m=0; m<meses.length; m++) {
                              
                document.write("<center><table border=1><tr><th colspan=7>" + meses[m] + " " + ano + "</th><tr>");
                document.write("<tr>");
                                      
                for (i=0; i<semana.length; i++) {
                        document.write("<td>" + semana[i] + "</td>");
                }
                document.write("</tr>");
                                      
                for (i=0; i<data.getDay(); i++) {
                        document.write("<td></td>");
                }
                                                                              
                for (i=0; i<diasMes[m]; i++) {
                        if (data.getDate()>i) {
                                diaSemana = data.getDay();
                                                      
                                if (diaSemana == 0) {
                                        document.write("<tr>");
                                }
                                                      
                                if (diaSemana != 7) {
                                        document.write("<td>" + (i+1) + "</td>");
                                }
                                                      
                                if (diaSemana = 7) {
                                        document.write("</tr>");
                                }
                        }
                        data.setDate(data.getDate() + 1);
                }
        }
}

Cumprimentos.