使用提交按钮减去两个日期
Subtracting two dates with a submit button
我在减去两个日期时遇到问题。这一切都始于两个输入。一个是日期,一个是提交按钮。在段落 #ekran
上,它需要显示 datePicked
是否低于今天的日期。它将表明我们需要在未来选择某个日期。否则它将计算今天的日期和我们选择的某个日期之间的差异。
当我喜欢这个时,它会说 NaN
。我知道我在某个地方搞砸了,但我不知道它在哪里。可能在 var d = newDate()
需要正确设置日期格式。还是我错了?帮帮我。
p.s。需要使用 eventListener 以 DOM lvl 2 方式完成。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<input type="date">
<input type="submit" value="submit">
<p id="ekran"></p>
<script>
var button = document.querySelector("[type=submit]").addEventListener('click', racunaj);
function racunaj() {
var d = new Date();
d.setDate(30,9,2018);
var datePicked = document.querySelector("[type=date]").value;
var diff = document.getElementById("ekran").innerHTML = datePicked;
if (datePicked< d) {
"The Picked date need to be bigger then todays date";
} else {
return diff;
}
}
</script>
</body>
</html>
您可以像这样更改您的代码(这是我之前的回答,我将其总结为增加与您的代码的相似性):
window.onload=function(){
document.querySelector("[type='submit']").addEventListener('click', racunaj);
function racunaj() {
var d = new Date();
d.setDate(30,9,2018);
var datePicked = new Date(document.querySelector("[type=date]").value);
var diff = datePicked.getTime()-d.getTime();
document.getElementById("ekran").innerHTML=diff<0 ? "The Picked date need to be bigger then todays date" : diff +" (days: "+(diff/1000/60/60/24).toFixed(2)+")";
return diff;
}
}
您可以查看结果online!
如果你想比较某样东西是多还是少,你必须先让它们成为同一类型。
A javascript 日期对象有一个名为 "getTime()" 的内置函数,可用于将日期转换为数字。
一旦你有两个数字,就很容易比较这两个数字。
我重写了您的脚本来证明这一点。
var button = document.querySelector("[type=submit]").addEventListener('click', racunaj);
function racunaj() {
// first I make the two variables into a number that can be compared
var currentTimeAndDate = new Date().getTime();
var datePicked = new Date(document.getElementById("myDate").value).getTime();
// as you see on the console, they are now two numbers that can be compared.
console.log(datePicked, currentTimeAndDate)
//then you just do your logic and output different stuff.
if(datePicked < currentTimeAndDate){
var diff = document.getElementById("ekran").innerHTML = "you chose past"
}
else if(datePicked > currentTimeAndDate){
var diff = document.getElementById("ekran").innerHTML = "you chose future"
}
else{
var diff = document.getElementById("ekran").innerHTML = "you did not choose"
}
}
我在减去两个日期时遇到问题。这一切都始于两个输入。一个是日期,一个是提交按钮。在段落 #ekran
上,它需要显示 datePicked
是否低于今天的日期。它将表明我们需要在未来选择某个日期。否则它将计算今天的日期和我们选择的某个日期之间的差异。
当我喜欢这个时,它会说 NaN
。我知道我在某个地方搞砸了,但我不知道它在哪里。可能在 var d = newDate()
需要正确设置日期格式。还是我错了?帮帮我。
p.s。需要使用 eventListener 以 DOM lvl 2 方式完成。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<input type="date">
<input type="submit" value="submit">
<p id="ekran"></p>
<script>
var button = document.querySelector("[type=submit]").addEventListener('click', racunaj);
function racunaj() {
var d = new Date();
d.setDate(30,9,2018);
var datePicked = document.querySelector("[type=date]").value;
var diff = document.getElementById("ekran").innerHTML = datePicked;
if (datePicked< d) {
"The Picked date need to be bigger then todays date";
} else {
return diff;
}
}
</script>
</body>
</html>
您可以像这样更改您的代码(这是我之前的回答,我将其总结为增加与您的代码的相似性):
window.onload=function(){
document.querySelector("[type='submit']").addEventListener('click', racunaj);
function racunaj() {
var d = new Date();
d.setDate(30,9,2018);
var datePicked = new Date(document.querySelector("[type=date]").value);
var diff = datePicked.getTime()-d.getTime();
document.getElementById("ekran").innerHTML=diff<0 ? "The Picked date need to be bigger then todays date" : diff +" (days: "+(diff/1000/60/60/24).toFixed(2)+")";
return diff;
}
}
您可以查看结果online!
如果你想比较某样东西是多还是少,你必须先让它们成为同一类型。
A javascript 日期对象有一个名为 "getTime()" 的内置函数,可用于将日期转换为数字。 一旦你有两个数字,就很容易比较这两个数字。
我重写了您的脚本来证明这一点。
var button = document.querySelector("[type=submit]").addEventListener('click', racunaj);
function racunaj() {
// first I make the two variables into a number that can be compared
var currentTimeAndDate = new Date().getTime();
var datePicked = new Date(document.getElementById("myDate").value).getTime();
// as you see on the console, they are now two numbers that can be compared.
console.log(datePicked, currentTimeAndDate)
//then you just do your logic and output different stuff.
if(datePicked < currentTimeAndDate){
var diff = document.getElementById("ekran").innerHTML = "you chose past"
}
else if(datePicked > currentTimeAndDate){
var diff = document.getElementById("ekran").innerHTML = "you chose future"
}
else{
var diff = document.getElementById("ekran").innerHTML = "you did not choose"
}
}