Autor Zpráva
Robert P.
Profil *
Ahoj přátelé, potřeboval by jsem poradit jakým způsobem doprogramovat část kódu, konkrétně u přestupného roku aby měl únor 29 dní?

Zde zadávám kód, se kterým by jsem potřeboval pomoct:

<HTML>
  <HEAD>
    <TITLE> Výběr data </TITLE>

    <SCRIPT Language="JavaScript">
      <!--
        // Počty dní v jednotlivých měsících
        // Únor má pro jednoduchost vždy 29 dní 
        Days=new Array (30,29,31,30,31,30,31,31,30,31,30,31);

        // Funkce, která se spustí při změně měsíce
        function onChangeMonth(){
          // Zapamatuje se vybraný den
          var OldSelected = document.frmCalendar.selDay.selectedIndex;

          // Smažou se všechny dny v nabídce
          document.frmCalendar.selDay.options.length = 0

          var optionName;
          var Length;
          // Počet dní v daném měsící
          var NumOfDays =
            Days[document.frmCalendar.selMonth.selectedIndex];

          // Vloží se odpovídající počet dní do nabídky
          for (i=1; i<=NumOfDays; i++){
            // Vytvoří se nová položka pro den
            optionName = new Option(i, i, false, false);
            Length = document.frmCalendar.selDay.length;
            document.frmCalendar.selDay.options[Length] = optionName;
          }

          // Vybere se den, který tam původně byl vybrán
          if (OldSelected >= document.frmCalendar.selDay.length)
            OldSelected = document.frmCalendar.selDay.length-1;
          document.frmCalendar.selDay.options[OldSelected].selected =
            true;
        }

        // Funkce pro získání výsledného data
        function GetDate(){
          DT = new Date (
            document.frmCalendar.selYear.options[
              document.frmCalendar.selYear.selectedIndex
            ].value,
            document.frmCalendar.selMonth.options[
              document.frmCalendar.selMonth.selectedIndex
            ].value,
            document.frmCalendar.selDay.options[
              document.frmCalendar.selDay.selectedIndex
            ].value
          );
          return (DT);
        }
      // -->
    </SCRIPT>
  </HEAD>

  <BODY OnLoad="onChangeMonth();">
    <FORM Name="frmCalendar" OnSubmit="return false;">

      Zadejte datum:<BR>

      <SELECT Name="selDay">
        <OPTION Value="10" Selected>1</OPTION>
      </SELECT>

      <SELECT Name="selMonth" OnChange="onChangeMonth();">
        <OPTION Value="1" Selected>Leden</OPTION>

        <OPTION Value="2">Únor</OPTION>
        <OPTION Value="3">Březen</OPTION>
        <OPTION Value="4">Duben</OPTION>
        <OPTION Value="5">Květen</OPTION>
        <OPTION Value="6">Červen</OPTION>
        <OPTION Value="7">Červenec</OPTION>

        <OPTION Value="8">Srpen</OPTION>
        <OPTION Value="9">Září</OPTION>
        <OPTION Value="10">Říjen</OPTION>
        <OPTION Value="11">Listopad</OPTION>
        <OPTION Value="12">Prosinec</OPTION>
      </SELECT>

      <SELECT Name="selYear">
        <OPTION Value="2000">2000</OPTION>
        <OPTION Value="2001">2001</OPTION>
        <OPTION Value="2002">2002</OPTION>
        <OPTION Value="2003" Selected>2003</OPTION>
        <OPTION Value="2004">2004</OPTION>

        <OPTION Value="2005">2005</OPTION>
      </SELECT>

      <INPUT Type="Button" Value="GetDate" OnClick="alert (GetDate());">

    </FORM>
  </BODY>
</HTML>




Děkuji
_es
Profil
Robert P.:
Viď tu.
Asi sa ti tá funkcia zíde.
Robert P.
Profil *
Děkuji za radu, ale stále se mi nedaří kód aby to pracovalo správně - mohl by jsi mi prosimtě pomoci od základů tam tu funkci doprogramovat, repspektive popsat alespoň postup ať to lépe pochopím? Děkuji všem

Pro ukázku přikládám kód ověření datumu:

function platnyDatum(den, mesiac, rok) {
  var d = new Date(Date.UTC(rok, mesiac - 1, den));
  return d.getUTCFullYear() === rok && d.getUTCMonth() === mesiac - 1 && d.getUTCDate() === den;
}

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0