Не могу заставить работать getDate () при сравнении дат - PullRequest
1 голос
/ 22 марта 2019

Я делаю решение, когда пользователь должен выбрать две даты, а затем я должен проверить, что они находятся в пределах недели друг от друга, и выяснить, сколько дней между ними.Я пытался использовать getDate () для этого, но я просто получаю сообщение об ошибке:

TypeError: periodeSlutt.getDate is not a function

Я надеялся, что кто-то из вас скажет мне, что я делаю неправильно.Я пытался искать, но я действительно не могу понять, в чем проблема.

Также: я норвежец, поэтому комментарии и имена переменных написаны на норвежском языке.Приношу извинения за доставленные неудобства.

<!doctype html>

<html>
    <head>
        <meta charset="utf-8">
        <title></title>

        <style type="text/css">

        </style>
    </head>

    <body>
        <form>
            Hei! Takk for at du ønsker å bestille heiskort hos oss. <br>
            Vennligst oppgi din alder: <input type="number" id="alder" min="1" max="99"> <br>
            Når ønsker du å besøke oss? Fra: <input type="date" id="datoStart"> Til: <input type="date" id="datoSlutt"> (Maks 1 uke)<br>
            <input type="submit" name="fullfør" onclick="beregnPris()">
        </form>
        <script type="text/javascript">

            var pris = 0;
            var makspris = 0;

            function beregnPris() {
                // sjekk om brukeren er under eller over 12 år.
                var brukerAlder = document.getElementById("alder").value;
                console.log(brukerAlder);

                    if (brukerAlder >= 12) {
                    // hvis under --> sett pris til 280 og makspris til 900.
                        pris = 280;
                        makspris = 900;
                    } else {
                    // hvis over --> sett pris til 440 og makspris til 1500.
                        pris = 440;
                        makspris = 1500;
                    }


                // sjekk når brukeren har bestilt.
                var periodeStart = document.getElementById("datoStart").value;
                var periodeSlutt = document.getElementById("datoSlutt").value;

                console.log(periodeStart);
                console.log(periodeSlutt);

                    // hvis tidsperioden er mer enn 7 dager, eller går tilbake i tid --> feilmelding.


                if (periodeStart > periodeSlutt) {
                    alert("Startdatoen må komme før sluttdatoen!");
                }

                // trekker en uke fra "periodeSlutt", slik at den kan sammenlignes med "periodeStart" og sjekke at oppholdet ike er mer enn én uke.
                var ukeSjekk = 0;
                ukeSjekk.setDate(periodeSlutt.getDate() - 7);
                console.log(ukeSjekk);

                if (periodeStart < ukeSjekk) {
                    alert("Du kan desverre ikke booke oss for mer en en uke.")
                }


                    // hvis tiden er rett --> pris * anntal dager.

                        // sjekker hvor mange dager det er mellom "periodeStart" og "periodeSlutt".
                        var antallDager = periodeSlutt.getDate() - periodeStart.getDate();

                        brukerPris = pris * antallDager;

                        // hvis prisen er under makspris --> ferdig.
                        if (brukerPris < makspris) {
                            document.write("Prisen ble " + brukerPris + ". Håper du har det flott hos oss.");
                        } else {
                            // hvis prisen er over makspris --> pris = pris - makspris. Rabatt = pris. Pris = makspris. --> ferdig
                            brukerPris = brukerPris - makspris;
                            var rabatt = brukerPris;
                            brukerPris = makspris;
                            document.write("Prisen ble " + brukerPris + ". Håper du har det flott hos oss. Du fikk en rabatt på " + rabatt + "kr!");
                        }   
            }

        </script>
    </body>
</html>

1 Ответ

1 голос
/ 22 марта 2019

Вы получаете необработанные числовые значения из входных данных, но вам нужно преобразовать их в объекты Date () javascript. Попробуйте это:

var periodeStart = new Date(document.getElementById("datoStart").value);
var periodeSlutt = new Date(document.getElementById("datoSlutt").value);

и

var ukeSjekk = new Date();
...