我想做一个功能,用户每天只能领取一次硬币。我做了这个函数,.split
以便它只比较日期,因为Date()
只比较日期和时间。但是,我收到了这个 javascript 错误:
未捕获的 TypeError(中间值)。split 不是函数
有谁知道如何解决这个问题?我尝试了很多方法。错误仍然存在。
这是我的代码:
$(document).ready(function () {
if (new Date(model[0].lastClaimedDate).split(' ')[0] < new Date().split(' ')[0]) {
document.getElementById('btnAddCoins').disabled = false;
}
else {
document.getElementById('btnAddCoins').disabled = true;
}
})
Run Code Online (Sandbox Code Playgroud)
问题
var date = new Date();
var claimedDate = new Date(date.setDate(date.getDate()-1)) ;
var todaysDate = new Date()
// converting toString and splitting up
claimedDate = claimedDate.toDateString().split(" ");
todaysDate = new Date().toDateString().split(" ");
// result date with array of Day, MonthName, Date and Year
console.log("claimed date", claimedDate)
console.log("todays date", todaysDate)
Run Code Online (Sandbox Code Playgroud)
`var d = new Date();` // Todays date
Run Code Online (Sandbox Code Playgroud)
如果你做一个d.split(" ")
:: 给你一个错误 d.split is not a function
你可以通过d.toDateString().split(" ")
// 给你一个数组["Fri", "Sep", "28", "2018"] `
使用上面的你可以检查上一个日期
您可以检查toDateString 方法,现在数组由日、月、日和年组成。所以你可以检查上一个日期,你可以禁用或启用按钮。
更好的解决方案
不需要转换为String和split,可以直接直接查看两个日期,查看解决方法
解决方案
`var d = new Date();` // Todays date
Run Code Online (Sandbox Code Playgroud)
$(document).ready(function () {
var date = new Date();
var lastClaimedDate = new Date(date.setDate(date.getDate() - 1 ));
var currentDate = new Date();
if(lastClaimedDate < currentDate){
$("#btnAddCoins").prop("disabled", true)
}else{
$("#btnAddCoins").prop("disabled", false)
}
})
Run Code Online (Sandbox Code Playgroud)