【发布时间】:2020-05-22 07:52:25
【问题描述】:
目前我正在使用momentJS,我想在某个条件为真时更改元素的文本。
要在 MomentJS 中度过一天,您只需执行 moment().day() 即可,小时和分钟也一样。天数从 1(星期一)到 7(星期日)。
我有一个所谓的“截止”时间来订购商品。例如“晚上 8 点前下单,次日送达”,那么截止时间是晚上 8 点。
我想要的条件是,当现在是第 5 天(星期五)并且已经过了截止时间(晚上 8 点)。它需要显示文本“周一晚上之前订购,周四交付”。但是假设它是星期六上午 9 点,它仍然需要显示该消息。只有在星期一晚上 8 点过后,它才会再次显示默认消息。
我写的代码如下:
if(moment().day() > 5 && moment().hour() > cutoff.hour() && moment().minute() > cutoff.minute()) {
tempCutOff = moment().set({'day': 1, 'hour': cutoffValues[0] - 1, 'minute': cutoffValues[1] - 1});
tempTimeLeft = moment(tempCutOff.diff(moment()))
$('.timerText').html("Order before " + tempCutOff.format('dddd') + "evening");
if(tempTimeLeft.days() > 0) {
str = tempTimeLeft.days() + " days " + tempTimeLeft.hours() + " hours and " + timeLeft.minutes() + " minutes";
} else {
str = timeLeft.hours() + " hours and " + timeLeft.minutes() + " minutes";
}
$("#orderCountdownTimer").html(str);
tempCutOff.add(1, 'days')
$('.timerTextExtra').html("delivered on " + tempCutOff.format('dddd'));
}
编辑:: 声明
let cutoffValues = $('.cutoff_value').val().split(":");
let str = "";
let cutoff = moment().set({'day': moment().day(), 'hour': cutoffValues[0] - 1, 'minute': cutoffValues[1]})
let timeLeft = moment(cutoff.diff(moment()));
let tempCutOff;
let tempTimeLeft;
这个 if 语句的问题是如果它是星期六上午 9 点。这个条件又是假的。我该如何解决这个问题?
【问题讨论】:
-
能否请您说明如何声明
cutoff? -
抱歉,我编辑了问题
-
您不能像那样对截止分钟执行 &&,因为下一小时分钟将再次重置为 0,但您仍然会晚于截止时间。编辑:哦,这基本上是你的问题。
-
是的,我知道,但是我如何构建 if 语句,这样我的上述条件才成立?
-
@Rainierlaan 看到我的回答,也许这不是完整的解决方案,但它应该能让你到达那里。
标签: javascript jquery momentjs