我想创建一个功能,使用户每天只能提取一次硬币。
我做了函数.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;
}
})
答案 0 :(得分:2)
问题
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)
`var d = new Date();` // Todays date
如果您执行d.split(" ")
::会导致错误d.split不是函数
您可以用d.toDateString().split(" ")
进行拆分// //为您提供 [“ Fri”,“ Sep”,“ 28”,“ 2018”] `
使用以上内容,您可以查看上一个日期
您可以检查toDateString method,现在该数组包含日,月,日期和年。因此,您可以检查上一个日期,也可以禁用或启用该按钮。
更好的解决方案
无需将其转换为String和split,您可以直接检查两个日期,检查解决方案
解决方案
$(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)
}
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="btnAddCoins">Add Coins</button>
答案 1 :(得分:0)
您可以将日期强制为字符串,然后在字符串上分割:
let strDate = (''+new Date()).split(' ')[0]
console.log( strDate )
但是,这是针对您的问题的错误解决方案。考虑比较日期对象而不是字符串。
let strLastClaimedDate = '01/02/2017 01:30:00'
let dtLastClaimedDate = new Date(strLastClaimedDate)
console.log(formatDate(dtLastClaimedDate))
if ( formatDate(dtLastClaimedDate) < formatDate(new Date('01/02/2017 02:00:00')) )
console.log('date is older')
else
console.log('same day (or after)')
function formatDate(dt){
let month = dt.getMonth()+1
month = month < 10 ? '0'+month : month
let day = dt.getDate()
day = day < 10 ? '0'+day : day
return [dt.getFullYear(),month,day].join('')
}