尝试让用户点击next和prev按钮使用JS调整日期.
当我加上一天并试图获得明天的约会时,这不起作用.
$('#next_date').click(function(e) {
var get_selected_date = "2015-12-14",
nextDay = get_selected_date.split('-')[2] + 1,
selectedDate = new Date(get_selected_date),
date = new Date(selectedDate.setDate(nextDay));
console.log(date);
});
但我设法使用相同的逻辑获得前一个日期,只需减去一天,如下所示
$('#prev_date').click(function(e) {
var get_selected_date = "2015-12-14",
nextDay = get_selected_date.split('-')[2] + 1,
selectedDate = new Date(get_selected_date),
date = new Date(selectedDate.setDate(nextDay));
console.log(date);
});
最佳答案 你的问题在于日期是一个字符串,并添加一个你追加到字符串 – 1转为字符串而不是14转为整数.但是,从字符串中减去字符串会将字符串强制转换为数字.这是JavaScript的一个怪癖,来自重用运算符.由于加号也用于组合字符串,因此其对混合类型操作数的行为有些令人困惑.
小cheatsheet(假设字符串可以被强制转换为数字):
string + string = string
string + number = string
number + string = string
string - number = number
number - string = number
string - string = number
+string + number = number (read below)
您可以使用parseInt(str)将从get_selected_date.split(‘ – ‘)[2]获得的字符串解析为int,或者使用常用的解决方法在字符串前加上加号.这会将字符串强制转换为数字.所以你的代码只需要这个改变:
nextDay = +get_selected_date.split('-')[2] + 1
为了优化,您可能还想写
selectedDate.setDate(nextDay);
并使用selectedDate而不是你的
date = new Date(selectedDate.setDate(nextDay));
setDate()返回但它也可以就地工作,因此它会更改您使用它的日期.
旁注:请对所有变量使用var.否则它们是全局的并且会弄乱你的其他代码.