Visualizzazione risultati 1 fino 7 di 7

Discussione: [JavaScript] Calendario a "tendina"

  1. #1
    Guest

    Predefinito [JavaScript] Calendario a "tendina"

    Io ho creato uno script per un calendario a tendina, ovvero con tre select uno con i giorni, uno coi mesi e uno can gli anni, ho fatto in modo che se ad esempio seleziono il mese di Febbraio i giorni diventano 28, stessa cosa per quelli di 30 e per i bisestili, solo che non va, vi posto il codice, potete aiutarmi a correggerlo?

    Codice HTML:
    <HTML>
    <HEAD>
    <META NAME="GENERATOR" Content="AlterVista - Editor HTML">
    <TITLE></TITLE>
    <script type="text/javascript">
    month = "window.document.getElementById['mese'].options[selectedIndex].text";
    day = "window.document.getElementById['giorno']";
    year = "window.document.getElementById['anno'].options[selectedIndex].text";
    
    function changelements(giorni, mese, anno){
    if(mese == "Gennaio" || mese == "Marzo" || mese == "Maggio" || mese == "Luglio" || mese == "Agosto" || mese == "Ottobre" || mese == "Dicembre"){
      for (c=0; c <= 31; c++)
                {
                        giorni.options[c].text = c+1;
                }
    } elseif(mese == "Aprile" || mese == "Giugno" || mese == "Settembre" || mese == "Novembre"){
        for (e=0; e <= 30; e++)
                {
                    giorni.options[c].text = e+1;
                }
    } elseif(mese == "Febbraio" && (anno ==  "1980" || anno ==  "1984" || anno ==  "1988" || anno ==  "1992" || anno ==  "1996" || anno ==  "2004" || anno ==  "2008")){
        for (u=0; u <= 29; u++)
                {
                    giorni.options[c].text = u+1;
                }
    } else {
        for (i=0; i <= 28; i++)
                {
                    giorni.options[c].text = i+1;
                }
    }
    }
    </script>
    </HEAD>
    <BODY>
    <form name="mioform">
    <select size="1" name="giorni" id="giorno">
    <option>-------</option>
    </select>
    <select size="1" id="mese" name="mesi" onChange="changelements(day,month,year);">
    <option>Gennaio</option>
    <option>Febbraio</option>
    <option>Marzo</option>
    <option>Aprile</option>
    <option>Maggio</option>
    <option>Giugno</option>
    <option>Luglio</option>
    <option>Agosto</option>
    <option>Settembre</option>
    <option>Ottobre</option>
    <option>Novembre</option>
    <option>Dicembre</option>
    </select>
    <select size="1" id="anno" name="anni" onChange="changelements(day,month,year);">
    <option>2005</option>
    <option>2004</option>
    <option>2003</option>
    <option>2002</option>
    <option>2001</option>
    <option>2000</option>
    <option>1999</option>
    <option>1998</option>
    <option>1997</option>
    <option>1996</option>
    <option>1995</option>
    <option>1994</option>
    <option>1993</option>
    <option>1992</option>
    <option>1991</option>
    <option>1990</option>
    <option>1989</option>
    <option>1988</option>
    <option>1987</option>
    <option>1986</option>
    <option>1985</option>
    <option>1984</option>
    <option>1983</option>
    <option>1982</option>
    <option>1981</option>
    <option>1980</option>
    </select>
    </form>
    <P>&nbsp;</P>
    
    </BODY>
    </HTML>

  2. #2
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Ho dato uno sguardo veloce al tuo codice e penso che l'errore sia qui:
    Codice:
    month = "window.document.getElementById['mese'].options[selectedIndex].text";
    day = "window.document.getElementById['giorno']";
    year = "window.document.getElementById['anno'].options[selectedIndex].text";
    Perchè li assegni come stringhe ( "window...." ) ?
    Poi document.getElementById è una funzione non un oggetto che contiene tutti gli elementi!

    Codice:
    month = document.getElementById('mese').options[selectedIndex].text;
    day = document.getElementById('giorno');
    year = document.getElementById('anno').options[selectedIndex].text;
    Visto che il tuo codice si trova nel tag <head> e in quel momento nessun elemento caricato dal browser avrà id mese/giorno/anno, quelle variabili risulteranno false/null e il tuo script non funzionerà!
    Hai due soluzioni:
    1. Definisci le variabili prima della chiusura del tag <body>
    2. Definisci le variabili all'evento onload della pagina

    Mentre la funzione puoi lasciarla anche in head.

  3. #3
    Guest

    Predefinito

    ho provato ad assegnare i valori delle variabili dopo il tag </head> ma non cambia nulla, ho provato anche a creare una funzione che assegna i valori e la funzione viene chiamata all'evento onload del tag body, ma niente, mi sa che ho fatto qualche altro errore

  4. #4
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Se ci fai vedere una pagina di esempio vedremo cosa si può fare.
    Comunque io dico prima del tag </body> e non </head>!

  5. #5
    Guest

    Predefinito

    avevo capito che intendevi prima del tag </body> infatti ho scritto che l'ho messo dopo </head> quindi dentro body, comunque la pagina é QUI il codice intero che ho adesso é:
    Codice HTML:
    <HTML>
    <HEAD>
    <META NAME="GENERATOR" Content="AlterVista - Editor HTML">
    <TITLE></TITLE>
    <script type="text/javascript">
    
    
    function changelements(giorni, mese, anno){
    if(mese == "Gennaio" || mese == "Marzo" || mese == "Maggio" || mese == "Luglio" || mese == "Agosto" || mese == "Ottobre" || mese == "Dicembre"){
      for (c=0; c <= 31; c++)
                {
                        giorni.options[c].text = c+1;
                }
    } elseif(mese == "Aprile" || mese == "Giugno" || mese == "Settembre" || mese == "Novembre"){
        for (e=0; e <= 30; e++)
                {
                    giorni.options[c].text = e+1;
                }
    } elseif(mese == "Febbraio" && (anno ==  "1980" || anno ==  "1984" || anno ==  "1988" || anno ==  "1992" || anno ==  "1996" || anno ==  "2004" || anno ==  "2008")){
        for (u=0; u <= 29; u++)
                {
                    giorni.options[c].text = u+1;
                }
    } else {
        for (i=0; i <= 28; i++)
                {
                    giorni.options[c].text = i+1;
                }
    }
    }
    </script>
    </HEAD>
    <BODY>
    <script type="text/javascript">
    month = window.document.getElementById('mese').options[selectedIndex].text;
    day = window.document.getElementById[('giorno');
    year = window.document.getElementById('anno').options[selectedIndex].text;
    </script>
    <form name="mioform">
    <select size="1" name="giorni" id="giorno">
    <option>-------</option>
    </select>
    <select size="1" id="mese" name="mesi" onChange="changelements(day,month,year);">
    <option>Gennaio</option>
    <option>Febbraio</option>
    <option>Marzo</option>
    <option>Aprile</option>
    <option>Maggio</option>
    <option>Giugno</option>
    <option>Luglio</option>
    <option>Agosto</option>
    <option>Settembre</option>
    <option>Ottobre</option>
    <option>Novembre</option>
    <option>Dicembre</option>
    </select>
    <select size="1" id="anno" name="anni" onChange="changelements(day,month,year);">
    <option>2005</option>
    <option>2004</option>
    <option>2003</option>
    <option>2002</option>
    <option>2001</option>
    <option>2000</option>
    <option>1999</option>
    <option>1998</option>
    <option>1997</option>
    <option>1996</option>
    <option>1995</option>
    <option>1994</option>
    <option>1993</option>
    <option>1992</option>
    <option>1991</option>
    <option>1990</option>
    <option>1989</option>
    <option>1988</option>
    <option>1987</option>
    <option>1986</option>
    <option>1985</option>
    <option>1984</option>
    <option>1983</option>
    <option>1982</option>
    <option>1981</option>
    <option>1980</option>
    </select>
    </form>
    <P>&nbsp;</P>
    
    </BODY>
    </HTML>

  6. #6
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Ma io ti ho detto prima di </body> non dopo <body> :P!

    Codice HTML:
    <HTML>
    <HEAD>
    <META NAME="GENERATOR" Content="AlterVista - Editor HTML">
    <TITLE></TITLE>
    <script type="text/javascript">
    function changelements(giorni, mese, anno){
    if(mese == "Gennaio" || mese == "Marzo" || mese == "Maggio" || mese == "Luglio" || mese == "Agosto" || mese == "Ottobre" || mese == "Dicembre"){
      for (c=0; c <= 31; c++)
                {
                        giorni.options[c].text = c+1;
                }
    } elseif(mese == "Aprile" || mese == "Giugno" || mese == "Settembre" || mese == "Novembre"){
        for (e=0; e <= 30; e++)
                {
                    giorni.options[c].text = e+1;
                }
    } elseif(mese == "Febbraio" && (anno ==  "1980" || anno ==  "1984" || anno ==  "1988" || anno ==  "1992" || anno ==  "1996" || anno ==  "2004" || anno ==  "2008")){
        for (u=0; u <= 29; u++)
                {
                    giorni.options[c].text = u+1;
                }
    } else {
        for (i=0; i <= 28; i++)
                {
                    giorni.options[c].text = i+1;
                }
    }
    }
    </script>
    </HEAD>
    <BODY>
    <form name="mioform">
    <select size="1" name="giorni" id="giorno">
    <option>-------</option>
    </select>
    <select size="1" id="mese" name="mesi" onChange="changelements(day,month,year);">
    <option>Gennaio</option>
    <option>Febbraio</option>
    <option>Marzo</option>
    <option>Aprile</option>
    <option>Maggio</option>
    <option>Giugno</option>
    <option>Luglio</option>
    <option>Agosto</option>
    <option>Settembre</option>
    <option>Ottobre</option>
    <option>Novembre</option>
    <option>Dicembre</option>
    </select>
    <select size="1" id="anno" name="anni" onChange="changelements(day,month,year);">
    <option>2005</option>
    <option>2004</option>
    <option>2003</option>
    <option>2002</option>
    <option>2001</option>
    <option>2000</option>
    <option>1999</option>
    <option>1998</option>
    <option>1997</option>
    <option>1996</option>
    <option>1995</option>
    <option>1994</option>
    <option>1993</option>
    <option>1992</option>
    <option>1991</option>
    <option>1990</option>
    <option>1989</option>
    <option>1988</option>
    <option>1987</option>
    <option>1986</option>
    <option>1985</option>
    <option>1984</option>
    <option>1983</option>
    <option>1982</option>
    <option>1981</option>
    <option>1980</option>
    </select>
    </form>
    <P>&nbsp;</P>
    <script type="text/javascript">
    month = window.document.getElementById('mese').options[selectedIndex].text;
    day = window.document.getElementById('giorno');
    year = window.document.getElementById('anno').options[selectedIndex].text;
    </script>
    </BODY>
    </HTML>
    Modifica così e poi vediamo se non funziona qualcosa

  7. #7
    Guest

    Predefinito

    ups, comunque ancora non va

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •