比较日期时无法使 getDate() 工作
Can't make getDate() working while comparing dates
我正在制定一个解决方案,用户必须 select 两个日期,然后我必须检查它们是否在一周内,并找出它们之间有多少天。我尝试使用 "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>
您正在从输入中获取原始数值,但您需要将它们转换为 javascript Date() 对象。试试这个:
var periodeStart = new Date(document.getElementById("datoStart").value);
var periodeSlutt = new Date(document.getElementById("datoSlutt").value);
和
var ukeSjekk = new Date();
我正在制定一个解决方案,用户必须 select 两个日期,然后我必须检查它们是否在一周内,并找出它们之间有多少天。我尝试使用 "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>
您正在从输入中获取原始数值,但您需要将它们转换为 javascript Date() 对象。试试这个:
var periodeStart = new Date(document.getElementById("datoStart").value);
var periodeSlutt = new Date(document.getElementById("datoSlutt").value);
和
var ukeSjekk = new Date();