我有一个关于在Javascript中传递参数的问题,特别是作为要解释的moment.js的值。
我有这个功能:function showAll(howlate)
。
我想将该howlate参数传递给函数中的两个位置
所以function showAll('oneWeekAgo')
就是这样的。
所以,这有效:
$.each(timesheets, function(i, timesheet) {
if (moment(timesheet.EndDate).isBefore(oneWeekAgo)) {
$("#demo").append('<span class="' + howlate + '">' + timesheet.UserName + '. </span><br>');
}
});
但这失败了,我试图将howlate
传递给moment.js代码:
$.each(timesheets, function(i, timesheet) {
if (moment(timesheet.EndDate).isBefore(howlate)) {
$("#demo").append('<span class="' + howlate + '">' + timesheet.UserName + '. </span><br>');
}
})
isBefore
中的,一个WeekAgo是一个var,表示一个moment.js值,var oneWeekAgo = moment().subtract(7, 'days');
是否有一些我不知道或理解的语法将参数传递给某些Javascript并让它被读取?
或者我是否尝试做太多,将参数替换为由变量值替换的变量?
我试图弄清楚我是否犯了语法错误,或者试图做一些无法完成的事情。
答案 0 :(得分:2)
问题是,当您调用oneWeekAgo
时,您引用showAll
,因此它传递的是字符串,而不是oneWeekAgo
变量的值。使用
showAll(oneWeekAgo);
答案 1 :(得分:1)
我猜你的 howLate 变量没有指向有效的moment()对象。
根据moment docs:
您可以使用#isValid时刻检查Moment是否认为日期无效。您可以使用#parsingFlags来检查#isValid使用的指标,它会返回一个对象。
您可以通过调用
来检查片刻是否有效moment().isValid();