javascript - 比较日期时无法使 getDate() 工作
问题描述
我正在制定一个解决方案,用户必须选择两个日期,然后我必须检查它们是否在一周内,并找出它们之间有多少天。我尝试使用“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();
推荐阅读
- apache-spark - Spark on Kubernetes 驱动程序 pod 清理
- c# - 动态 Linq 表达式查询嵌套列表对象
- jasper-reports - Jasper 报告 - 错误时忽略数字格式
- javascript - 如何为某个文档添加某个图标以进行带预览的多个文件上传
- swift - 延迟函数调用 - asyncAfter 和 sleep 的区别
- r - R语言中朴素贝叶斯分类器的predict()中的下标类型“列表”无效
- sqlite - sqlite3 - 在冲突时更新主键
- javascript - NextJS 头部中的 HubSpot 表单脚本
- java - 如何修复抖动运动(正方形的玩家)
- r - 如何在 Gather TidyR 中引用多个独立变量?